设为首页 加入收藏

TOP

IOS开发基础知识--碎片39(一)
2017-10-13 10:33:48 】 浏览:3229
Tags:IOS 开发 基础知识 碎片

1:UIWindow知识点

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window=[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

    self.window.backgroundColor=[UIColor redColor];

    self.window.rootViewController=[[ViewController alloc]init];

    [self.window makeKeyAndVisible];

    return YES;

}

iOS9要求所有UIWindow都有rootViewController,如果没有rootViewController就会报错了;

(a)【self.window makekeyandvisible】让窗口成为主窗口,并且显示出来。有这个方法,才能把信息显示到屏幕上。

(b) 因为Window有makekeyandvisible这个方法,可以让这个Window凭空的显示出来,而其他的view没有这个方法,所以它只能依赖于Window,Window显示出来后,view才依附在Window上显示出来。

(c)【self.window make keywindow】//让uiwindow成为主窗口,但不显示。

(d)[UIApplication sharedApplication].windows  在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象(平时输入文字弹出的键盘,就处在一个新的UIWindow中)

(d)[UIApplication sharedApplication].keyWindow(获取应用程序的主窗口)用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。

提示:如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow

(f)view.window获得某个UIView所在的UIWindow

 

 

2:UINavigationController知识点

a.把子控制器添加到导航控制器中的四种方法

第一种:

 1.创建一个导航控制器

    UINavigationController *nav=[[UINavigationControlleralloc]init];

2.设置导航控制器为window的根视图

    self.window.rootViewController=nav;

3.添加

    YYOneViewController  *one = [[YYOneViewController  alloc] init];

    [nav pushViewController:one animated:YES];

 

第二种:

 1.创建一个导航控制器

 UINavigationController *nav=[[UINavigationControlleralloc]init];

 2.设置导航控制器为window的根视图

 self.window.rootViewController=nav;

 3.添加

YYOneViewController  *one = [[YYOneViewController  alloc] init];

 [nav addChildViewController:one];

 

第三种:

 1.创建一个导航控制器

 UINavigationController *nav=[[UINavigationControlleralloc]init];

 2.设置导航控制器为window的根视图

 self.window.rootViewController=nav;

3.添加

YYOneViewController  *one = [[YYOneViewController  alloc] init];

nav.viewControllers=@[one];(添加到导航控制器的栈中)

说明:nav.viewControllers;== nav.childViewControllers;注意该属性是只读的,因此不能像下面这样写。nav.childViewControllers = @[one];

 

第四种:最常用的方法

 YYOneViewController *one=[[YYOneViewController alloc]init];

 UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:one];

 

b.当前子控制器界面导航栏的标题以及对应返回标题的设置

self.navigationItem.title=@"第一个界面";

self.navigationItem.backBarButtonItem=[[UIBarButtonItemalloc]initWithTitle:@"返回一" style:UIBarButtonItemStylePlain target:nilaction:nil];

 

c.给导航栏添加按钮

说明:可添加一个,也可以添加多个(数组)

添加导航栏左边的按钮(添加一个相机图标的按钮),会盖掉返回

 self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:nil action:nil];

 

d.界面跳转

跳转到第二个界面(当前为第三个,移除当前栈顶的控制器)

 [self.navigationController popViewControllerAnimated:YES];

 移除处理栈底控制器之外的所有控制器 

 [self.navigationController popToRootViewControllerAnimated:YES];

只要传入栈中的某一个控制器,就会跳转到指定控制器 [self.navigationController popToViewController:<#(UIViewController *)#> animated:<#(BOOL)#>];


编程开发网
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ios 界面间跳转方法总结 下一篇10分钟搞定支付宝支付 的 各种填坑

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }