1.0 多控制器管理(附:Demo)
|
|
| 1.直接代码创建(alloc+init) |
| 2.通过 Xib 文件创建 |
| 3.通过 storyboard 创建 |
#import "AppDelegate.h"
#import "TDViewController.h" @interfaceAppDelegate ()
@end @implementation AppDelegate //应用程序启动完成,调用此方法;如果因为内存等原因,应用程序被操作系统干掉,再次点击图标,会调用此方法!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1. 实例化UIWindow(特殊的UIView)
self.window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds]; // 2.alloc init 方法( 实例化视图控制器)
TDViewController *vc = [[TDViewControlleralloc] init]; self.window.rootViewController = vc; // 设置根控制器(把视图控制器添加到window窗口的根视图上)
[self.windowmakeKeyAndVisible]; // 让窗口变成主窗口并且可见 returnYES;
}
……………
#import "TDViewController.h" @interfaceTDViewController ()
@end @implementation TDViewController - (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view.
NSLog(@"你加载的是 TDViewController");
}
……………
| 2016-01-19 18:44:11.706 UIViewController(alloc+init)[2653:418332] 你加载的是 TDViewController |
|
报错:'-[UIViewController _loadViewFromNibNamed:bundle:] was unable to load a nib named “TDView"'
解决:拖一个view
|
|
报错:'-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "TDView" nib but the view outlet was not set.'
解决: 在xib 的 File‘s Ower上,绑定class到TDViewController,再右键View连线
|
#import "AppDelegate.h"
#import "TDViewController.h" @interfaceAppDelegate ()
@end @implementation AppDelegate //应用程序启动完成,调用此方法;如果因为内存等原因,应用程序被操作系统干掉,再次点击图标,会调用此方法!
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1.实例化UIWindow(特殊的UIView)
self.window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds]; // 2. 加载指定的xib文件
TDViewController *vc =
[[TDViewControlleralloc] initWithNibName:@"TDView"bundle:nil]; self.window.rootViewController = vc; // 设置根控制器(把视图控制器添加到window窗口的根视图上)
[self.windowmakeKeyAndVisible]; // 让窗口变成主窗口并且可见 returnYES;
}
……………
#import "TDViewController.h" @interfaceTDViewController ()
@end @implementation TDViewController - (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view.
NSLog(@"你加载的是 TDViewController");
}
……………
| 2016-01-19 19:08:43.400 UIViewController(Xib)[3121:549327] 你加载的是 TDViewController |
#import "AppDelegate.h"
#import "TDViewController.h" @interfaceAppDelegate ()
@end @implementation AppDelegate //应用程序启动完成,调用此方法;如果因为内存等原因,应用程序被操作系统干掉,再次点击图标,会调用此方法!
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1.实例化UIWindow(特殊的UIView)
self.window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds]; // 2. 先加载sb文件(sb 里面的 Class 要指向要创建的控制器的类名)(bundle 传nil 默认就是main bundle)
UIStoryboard *sb = [UIStoryboardstoryboardWithName:@"TD"bundle:nil]; // 3.接着初始化storyboard中的控制器
// 方法1:初始化“初始控制器”(sb中箭头所指的控制器)<通过加载sb文件来创建控制器的视图,即视图控制器>
TDViewController *vc = [sb instantiateInitialViewController]; // 方法2:通过一个标识,初始化对应的控制器(需要在sb上的控制器设置 Storyboard ID)
TDViewController *vc = [sb instantiateViewControllerWithIdentifier:@"TD"]; self.window.rootViewController = vc; // 设置根控制器(把视图控制器添加到window窗口的根视图上)
[self.windowmakeKeyAndVisible]; // 让窗口变成主窗口并且可见 returnYES;
}
……………
#import "TDViewController.h" @interfaceTDViewController ()
@end @implementation TDViewController - (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view.
NSLog(@"你加载的是 TDViewController");
}
……………
| 2016-01-19 19:19:53.029 UIViewController(storyboard)[3381:616265] 你加载的是 TDViewController |
1.0 多控制器管理(附:Demo)的更多相关文章
- 基于ZKWeb + Angular 4.0的开源管理后台Demo
这是一套基于ZKWeb网页框架和Angular 4.0编写的开源管理后台Demo,实现了前后端分离和模块化开发, 地址是: https://github.com/zkweb-framework/ZKW ...
- FMDB的使用方法(附Demo)
http://www.jianshu.com/p/54e74ce87404 最近在项目中需要在多个页面对同样的数据进行相关操作,于是便用到了FMDB数据库操作,以下便是FMDB的一些简单的使用方法.附 ...
- Asp.net MVC集成Google Calendar API(附Demo源码)
Asp.net MVC集成Google Calendar API(附Demo源码) Google Calendar是非常方便的日程管理应用,很多人都非常熟悉.Google的应用在国内不稳定,但是在国外 ...
- C#开发微信公众平台-就这么简单(附Demo)转载
C#开发微信公众平台-就这么简单(附Demo) 来源:https://www.cnblogs.com/xishuai/p/3625859.html#!comments 写在前面 阅读目录: 服务号和 ...
- Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码
Linux 部署ASP.NET SQLite 应用 的坎坷之旅.文章底部 附示例代码. 有一台闲置的Linux VPS,尝试着部署一下.NET 程序,结果就踏上了坑之路,不过最后算是完美解决问题,遂记 ...
- 【转】IOS AutoLayout详解(三)用代码实现(附Demo下载)
转载自:blog.csdn.net/hello_hwc IOS SDK详解 前言: 在开发的过程中,有时候创建View没办法通过Storyboard来进行,又需要AutoLayout,这时候用代码创建 ...
- winserver的consul部署实践与.net core客户端使用(附demo源码)
winserver的consul部署实践与.net core客户端使用(附demo源码) 前言 随着微服务兴起,服务的管理显得极其重要.都知道微服务就是”拆“,把臃肿的单块应用,拆分成多个轻量级的 ...
- C#版清晰易懂TCP通信原理解析(附demo)
[转] C#版清晰易懂TCP通信原理解析(附demo) (点击上方蓝字,可快速关注我们) 来源:周见智 cnblogs.com/xiaozhi_5638/p/4244797.html 对.NET中网络 ...
- 微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/a1786223749/article/ ...
随机推荐
- Python Day9
Paramiko模块 paramiko模块基于SSH用于连接远程服务器并执行相关操作 基于用户名密码连接: import paramiko # 创建SSH对象 ssh = paramiko.SSHCl ...
- 配置struts2+spring,springmvc
Struts2+Spring整合 一.spring负责注入,struts2负责它自己的工作.这样不是很符合spring作为ioc容器的全部功能,不推荐. 二.spring负责全部bean和struts ...
- Css中的Position属性
Css中的Position属性 Css属性在线查询地址: http://www.css88.com/book/css/properties/index.htm CSS 中的 position 属性 在 ...
- cxf 调用 webservice服务时传递 服务器验证需要的用户名密码
cxf通过wsdl2java生成客户端调用webservice时,如果服务器端需要通过用户名和密码验证,则客户端必须传递验证所必须的用户名和密码,刚开始想通过url传递用户名和密码,于是在wsdl文件 ...
- JS之Form表单相关操作
获取ID组件的值 var userid=document.getElementById('userid').value;var cdkey=document.getElementById('cdkey ...
- Android之layout_weight解析
我们先来看以下这段Android布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi ...
- UIScrollView和delegate的通信
在OC中,发送消息的意思就是调用方法 因此UIScrollView和delegate的通信可以理解为下图所示 再精确一点,UIScrollView和delegate的通信应该为下图所示 可以看出,要想 ...
- CSS-dl+dt+dd的应用(非常实用)
http://smallpig301.blog.163.com/blog/static/9986093201010262499229/
- PHP中计划任务
PHP不支持多线程,有时候处理问题不是那么爽,今天谈论一下PHP定时执行的方法 PHP定时执行的三种方式实现 .windows 的计划任务 .linux的脚本程序 .让web浏览器定时刷新 windo ...
- 常用mysql语句
mysql基本知识:日志文件 =======================================开启/关闭日志修改 /etc/my.cnf #log-bin=mysql-bin #重启my ...