当前位置: 首页 > news >正文

app做好了网站怎么做wordpress自带搜索引擎

app做好了网站怎么做,wordpress自带搜索引擎,wordpress主题添加字体设置,如何做整人网站push和present 两者的区别 push: push由视图栈控制,每一个视图都入栈,调用之前的视图则需要出栈,可返回任意一层,一般用于同一业务不同界面之间的切换。 push是由UINavigationController管理的视图控制器堆栈,在wind…

push和present

  1. 两者的区别
  • push:
    push由视图栈控制,每一个视图都入栈,调用之前的视图则需要出栈,可返回任意一层,一般用于同一业务不同界面之间的切换。
    push是由UINavigationController管理的视图控制器堆栈,在window下同时只能显示一个ViewController。
  • present:
    present弹出的视图是模态视图(我对模态视图的理解大概就是一个临时视图),只能逐级返回,一般用于不同业务界面的切换。
    present是由UIViewController管理的视图控制器堆栈,在window下可以以叠加的方式展示,当顶层的view透明时可以看到底层的view,但只有顶层的view可用户交互。

对push和present的其他补充在我以前的博客中写到过:UI学习之——iOS中界面的推出方法

presentingViewController和presentedViewController

presentedViewController和presentingViewController的区别:
presentedViewController和presentingViewController是UIViewController中的两个属性,例如,如果ViewControllerA调用present(_:animated:completion:)方法将ViewControllerB呈现出来,那么ViewControllerA就是presentingViewController,ViewControllerB就是presentedViewController。
这两个概念在使用Modal视图控制器时非常有用,因为它们允许您跟踪当前视图控制器的状态以及它所呈现的视图控制器。

  1. presentedViewController:由这个视图控制器或它最近的祖先呈现的视图控制器
  2. presentingViewController:呈现此视图控制器(或其最远祖先)的视图控制器

dismiss多级的方法:

这里我们使用几个案例来说明:
假设我们有6个视图控制器,颜色和层级关系分别是红->橙->黄->绿->蓝->紫。

dismiss到根视图控制器

按照之前所学的,如果我们直接用dismiss方法,视图会从当前层级跳转到上一层级,那么如果我现在想让它从当前视图控制器直接dismiss到根视图控制器,应该怎么做呢?
给出代码实现:

#import "FiveViewController.h"
#import "FourViewController.h"@interface FiveViewController ()@end@implementation FiveViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor purpleColor];UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];[button setTitle:@"切换" forState:UIControlStateNormal];button.frame = CGRectMake(100, 300, 200, 80);[button addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:button];}
- (void)press {//使用多级dismiss从当前视图返回根视图//首先创建一个UIViewController的实例对象,用于作为我们的根视图控制器//presentingViewController属性是指当前视图的上一个视图控制器,我们将刚刚创建的根视图控制器赋为当前视图的上一个视图UIViewController *rootViewController = self.presentingViewController;//进入一个循环,一直将该根视图控制器对象赋为它的前一个视图控制器,直到它的前一个视图控制器为nil,则表示我们找到了根视图控制器while (rootViewController.presentingViewController) {rootViewController = rootViewController.presentingViewController;}//使用dismiss回到根视图控制器[rootViewController dismissViewControllerAnimated:YES completion:nil];
}
@end

在该代码中,FourViewController是FiveViewController的上一级视图控制器,我们在当前页面先设置一个按钮,并为按钮设置事件函数。该事件函数中我们调用当前视图的presentingViewController属性来获取其上一级视图控制器对象,然后一直循环,直到我们获取到根视图控制器。

在此处,我一开始不理解为什么使用根视图控制器直接dismiss可以回到根视图控制器。因为之前一直以来,我对dismiss的理解都是“销毁当前视图控制器并返回上一级视图控制器”,而这里的rootViewController并不是当前视图控制器,它也没有上一级视图控制器,为什么能这样实现呢?
直到我查到了dismiss的文档描述:
如果您连续显示多个视图控制器,从而构建一个显示的视图控制器堆栈,则在堆栈中较低的视图控制器上调用此方法会解除其直接子视图控制器和堆栈中该子级以上的所有视图控制器。当发生这种情况时,只有最上面的视图以动画的方式被取消;任何中间视图控制器都只是从堆栈中删除。最上面的视图将使用其模态转换样式来消除,这可能与堆栈中较低的其他视图控制器使用的样式不同。
原来是这样,因此,这里不光是根视图控制器,改为其他任何一个视图控制器都是同理

结果演示:
在这里插入图片描述

dismiss指定级数

这里演示dismiss两级:

#import "FourViewController.h"
#import "FiveViewController.h"@interface FourViewController ()@end@implementation FourViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor blueColor];UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];[button setTitle:@"切换" forState:UIControlStateNormal];button.frame = CGRectMake(100, 300, 200, 80);[button addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:button];UIButton *dismissTwoButton = [UIButton buttonWithType:UIButtonTypeSystem];[dismissTwoButton setTitle:@"dismiss两级(到黄色视图)" forState:UIControlStateNormal];dismissTwoButton.frame = CGRectMake(100, 500, 200, 80);[dismissTwoButton addTarget:self action:@selector(pressDismissTwo) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:dismissTwoButton];}
- (void)press {FiveViewController *five = [[FiveViewController alloc] init];[self presentViewController:five animated:YES completion:nil];
}- (void) pressDismissTwo {[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}@end

演示结果:
在这里插入图片描述

dismiss到目标视图控制器

通过dismiss跳转到目标视图控制器,同样也是要一级一级的通过presentingViewController属性进行遍历,不过这里的循环跳出条件是对便利到的视图控制器的类进行判断
代码实现:

#import "ThreeViewController.h"
#import "FourViewController.h"
#import "OneViewController.h"@interface ThreeViewController ()@end@implementation ThreeViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor greenColor];UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];[button setTitle:@"切换" forState:UIControlStateNormal];button.frame = CGRectMake(100, 300, 200, 80);[button addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:button];UIButton *dismissButton = [UIButton buttonWithType:UIButtonTypeSystem];[dismissButton setTitle:@"dismiss到目标控制器(橙色)" forState:UIControlStateNormal];dismissButton.frame = CGRectMake(100, 500, 200, 80);[dismissButton addTarget:self action:@selector(pressDismiss) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:dismissButton];
}
- (void)press {FourViewController *four = [[FourViewController alloc] init];[self presentViewController:four animated:YES completion:nil];
}- (void) pressDismiss {//接下来演示从当前视图控制器dismiss到目标视图控制器//同样的,我们首先先创建一个视图控制器的实例对象,然后将其赋值为当前视图的前一个视图控制器UIViewController *muBiaoViewController = self.presentingViewController;//然后一样的进入while循环,但是此处不同的是出循环的条件是当该对象的父类是目标视图控制器类while (![muBiaoViewController isKindOfClass:[OneViewController class]]) {muBiaoViewController = muBiaoViewController.presentingViewController;}[muBiaoViewController dismissViewControllerAnimated:YES completion:nil];
}@end

在该代码中,ThreeViewController是当前视图控制器(绿色),FourViewController是当前视图控制器的上一级视图控制器,OneViewController是我们要跳转的目标视图控制器(橙色)。
演示结果:
在这里插入图片描述

http://www.15wanjia.com/news/154926.html

相关文章:

  • 江西省建设监理协会网站百度首页排名优化公司
  • 做网站该读啥wordpress顶部图像修改
  • 中国做网站的公司排名学校网站建设意义有哪些
  • 网站改版设计思路扬州建设企业网站
  • 免费手机网站模板深圳南山网站建设工作室
  • 企业网站哪个平台好崇信县门户网站
  • 网站2级页面怎么做对网站建设有什么样好的建设意见
  • 河南周口东宇网站建设亳州蒙城网站建设
  • 鑫迪建站系统免费logo设计图案创意
  • 北辰做网站wordpress点击量最多的文章
  • 爱站网自媒体数据wordpress基础版
  • 高端网站建设哪家公司好网站开发项目答辩ppt
  • 汕头seo优化seo搜索优化排名
  • 站长之家查询的网址南昌网站建设kaiu
  • 网站一般建什么做简单网站需要学什么软件有哪些
  • discuz做资讯网站合适吗wordpress页面目录
  • 文档阅读网站模板下载邵阳建设局网站
  • 网站做的支付宝接口吗附近的招聘工作
  • 石家庄高端网站制作福州 网站设计
  • 电子商务网站管理内容网站视频与服务器的关系
  • 个人做外贸的网站有哪些站长交流平台
  • 学校网站建设培训方案模板东莞企业网络推广运营技巧
  • 网站建设微分销个人手机版网站app怎么做
  • 教学网站前台er图站长网站素材
  • int域名网站有哪些软件开发管理平台
  • 网站设计工程师是it行业吗网站的标志可以修改吗
  • 做网站的人跑了网站可以恢复吗武宁县建设工程招标公告门户网站
  • 怎样设置 自己的网站学校资源网站的建设方案
  • 大网站怎样选域名室内设计公司免费网站
  • 大连做网站 首选领超科技现在做个网站要多少钱