UINavigationController的特点:
1)采用栈的形式来存放多个视图
2)当需要视图跳转是,多个视图按一定次序入栈,位于栈顶的视图显示出来。
3)当需要从当前视图返回前一视图是,可将栈顶的视图弹出,接着显示器下面的视图。
4)如此操作下去,直至返回到navigationController中的根视图为止。
使用技巧:
1)在一个程序的人口类中,需要声明一个UINavigationController的属性,以便使用。
2)在这个navigationController属性在初始化时,可以指定其根视图。
3)如需视图跳转,将需要显示的ViewController通过其navigationController属性的pushViewController方法将其压入栈中
4)弹出视图时,可以通过popViewControllerAnimated方法将栈顶视图弹出。
注意事项:
1)每个ViewController都继承与UIViewController,故其自身都拥有一个navigationController属性和tabBarController属性。
2)当某个UIViewController位于某个tabBar
当表视图需要一个表视图单元的数据时调用,一般用cellForRowAtIndex参数作为数据来源的索引,直接作为数组下标即可。如果用全局变量作为数据索引,就有两个问题。
1.全局变量需要与实际的数据在数组中的位置同步,需要添加全局变量增加或减小的代码。
2.在重新绘制表格的时候需要把全局变量清零,就是当全局变量等于数组元素个数的时候。例如在拨号程序中,原数组中并不是每个元素的数据都是可用的表格单元数据,需要判断布尔属性,控制全局索引自增。在函数开头,添加判断全局变量是否等于数组元素个数的代码,将全局变量清零,否则在上下拖动表格时会出现数组下标越界的错误。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
UINavigationController应用程序框架:
1)创建应用程序为窗口框架
2)设置窗口子视图为导航控制器
#import<UIKit/UIKit.h>
@interface NavAppdelegate:NSObject<Appdelegate>{
UIWindow * window;
UINavigationController * navController;
}
@property (nonatomic,retain)IBOutlet UIWindow*window;
@property (nonatomic,retian)IBOutlet UINavigationController * navController;
@end;
在appdelegate.m中把navController添加为window的子视图
在mainWindow.nib中添加一个Navigation Controller对象,并且从AppDelegate按住control键连接到 Navigaion Controller对象,连接到Appdelegate的输出口navController;
3)创建根视图控制器
创建根视图控制器类,注意是派生在UITableViewController的。
在mainWindow.nib下,列表模式下展开Navigation Controller对象,然后选择其子对象View Conroller,
苹果键+4打开身份识别设置Identify,设置class为根视图控制器
4)在根视图控制器中添加一个数组用来存放所有需要入栈的视图,注意最后一个入栈的视图是展现在最上面的。
5)定义其他需要导航的子视图
6)在根视图的数据源方法tableView:cellForRowAtIndex,获取出列单元,如果不存在就创建一个恶
7)在根视图的数据委托方法didSelectRowAtIndexPath:中把要入栈的最后那个视图压人栈
[self.navController pushViewController:nextController animatied:YES];
分享到:
相关推荐
导航视图管理 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[MyViewController alloc] init]]; [window addSubview:nav.view];
导航栏和tableView的多级视图,可保存下个视图的内容
《Iphone开发基础教程》第九章 导航控制器和表视图
而Iphone只有一个home键,所以我们会发现在Iphone的大部分应用中会在顶部有一个导航条,比如系统的设置界面,该导航条完全按照栈的方式来管理,所以可以很方便的实现后退的操作:今天下了春雨,心情不错,总结一下...
1.11. iPhone标准按钮和图标 27 1.11.1. 工具栏和导航栏上的标准按钮 27 1.12. 标签栏上的标准图标 29 1.13. 创建自定义图标和图片 29 1.13.1. 程序图标 29 1.13.2. 小图标 30 1.13.3. 启动图片 30 1.13.4. 导航栏、...
类似于Path或Facebook应用的效果,...主视图的导航条有两个按钮,点击左边按钮,主视图会往右移动大概4/5,左边4/5的屏幕显示底下的子视图。点击右边按钮,则右边屏幕显示底下另外一个子视图。 注意:请在Mac下解压使用
11.4 3 震动iPhone 11.5 小结 11.6 问与答 11.7 作业 11.7 1测验 11.7.2 答素 11.7.3 练习 11.8 进一步探索 第12章 使用工具栏创建简单的多视图应用程序 12.1 探索单视图应用程序和多视图应用程序 12.2 创建多视图...
本书全面探讨了 iphone平台的两种编程方式 ——web开发和 sdk编程。全书结合示例对这两种编程方式的基本流程、基本原理和基本原则给出了详细而通俗的讲解。在 web开发方面,分别介绍了三个 iphone web库,即 ...
类似于Facebook的ViewControllerContainer,在一个UIViewController上面加载另外一个UIViewController。通过用手指划动当前视图的导航条,就会显示出后面的视图。仅支持iOS5以上版本。 注意:请在Mac下解压使用
您将从设计基本用户界面开始,然后探索涉及多个屏幕的更复杂的界面,例如导航控制器、选项卡栏、工具栏、页面视图和拆分视图,这些在iPad和某些iPhone型号的大屏幕上特别有用。还有更多!从SWIFT 5开始的iPhone开发...
退回输入键盘 2 CGRect 2 CGPoint & CGSize 3 设置透明度 3 设置背景色 3 自定义颜色 3 竖屏 3 横屏 3 状态栏高 3 导航栏、工具栏高 3 隐藏状态栏 3 ...自动适应父视图大小: 3 ...iphone更改键盘右下角按键的type 45
3.7 秘诀:在视图控制器之间导航.....81 3.7.1 返回根.....83 3.7.2 加载视图控制器数组.....83 3.8 选项卡栏.....83 3.9 小结.....86 第4章警告用户......87 4.1 通过警告直接与用户对话.....87 4.1.1 记录结果.......
3.7 秘诀:在视图控制器之间导航.....81 3.7.1 返回根.....83 3.7.2 加载视图控制器数组.....83 3.8 选项卡栏.....83 3.9 小结.....86 第4章警告用户......87 4.1 通过警告直接与用户对话.....87 4.1.1 记录结果.......
3.7 秘诀:在视图控制器之间导航.....81 3.7.1 返回根.....83 3.7.2 加载视图控制器数组.....83 3.8 选项卡栏.....83 3.9 小结.....86 第4章警告用户......87 4.1 通过警告直接与用户对话.....87 4.1.1 记录结果.......
第9章 导航控制器和表视图 第10章 应用程序设置和用户默认设置 第11章 基本数据持久性 第12章 使用Quartz和OpenGL绘图 第13章 轻击、触摸和手势 第14章 我在哪里?使用Core Location定位功能 第15章 ...
第9章 导航控制器和表视图 184 9.1 导航控制器 184 9.1.1 栈的性质 184 9.1.2 控制器栈 185 9.2 由6个部分组成的分层应用程序:Nav 185 9.3 构建Nav应用程序的骨架 188 9.3.1 创建第一级视图控制器 188 9.3.2 设置...