相比于之前的看视频,现在回头来看一下书,觉得理解的更加深刻,并知道了以前没有了解的知识点,当然还有更多的知识可以看官方文档,但是英语不好的话就太花时间了,也没有必要这样做。
1.UINavigationController的rootViewController,topViewController和viewCtrollers
UINavigationController的rootViewController属性变量一直存放在栈底,topViewController放在栈顶,viewCotrollers存放UInavigationController压入的各种UIViewController。
2.UINavigationController视图层次关系
UINavigationController的视图(view)至少有两个子视图,一个是UINavigationBar,一个是topViewController的视图(view),并且在显示时UINavigationController调整了topViewController的view的大小。UINavigationBar上面的子视图又是从topViewController的navigationItem(UINavigationItem类)的三个属性变量中拿到的,UINavigationItem的三个属性分别是leftBarButtonItem(UIBarButtonItem类),titleView(UIView和其子类),rightBarButtonItem(UIBarButtonItem类)。当然UINavigationBar的title部分可以直接拿topViewController的title属性(即只需设这个属性就能显示到navigationBar上)。
3.UITableViewContrller的编辑模式
表格控制对象有一个isEditing属性来返回一个BOOL类型来说明是视图否处于编辑模式,向表格对象发送setEditing:animated:消息设置是否为编辑模式。
- (void)toggleEditingMode:(id)sender
{
// If we are currently in editing mode...
if ([self isEditing]) {
// Change text of button to inform user of state
[sender setTitle:@"Edit" forState:UIControlStateNormal];
// Turn off editing mode
[self setEditing:NO animated:YES];
} else {
// Change text of button to inform user of state
[sender setTitle:@"Done" forState:UIControlStateNormal];
// Enter editing mode
[self setEditing:YES animated:YES];
}
}
如果要在navigationBar上面添加一个按钮实现上面代码效果只需一句:
[[self navigationItem] setLeftBarButtonItem:[self editButtonItem]];
因为UITableViewController的editButtonItem已经实现了相应的动作。
4.为UITextField设置数字键盘
在xib文件中对UITextField的属性设置,通过属性检视板(attributes inspector)找到相应的设置。