我学习了ObjC程序流程,到目前为止我理解链接开始于main.m-> UIApplicationMain-> AppDelegate-> ViewController
我不明白的一点是,AppDelegate类中ViewController内部的哪个方法转移焦点......
我认为理解这个主题至关重要,所以要感谢任何澄清。
我有Appdelegate.m的代码 -
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
MasterViewController *masterViewController = [[MasterViewController alloc] init];
self.navigationController = [[UINavigationController alloc] initWithRootViewController: masterViewController];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
并且在ViewController中有这些方法 -
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self.navigationController setNavigationBarHidden:YES animated: NO];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear: animated];
}
和其他方法......
我的问题是
如果你发现我的误解点 - 请耐心解释......我觉得在此之后我将能够开始......
答案 0 :(得分:0)
(1)你正在以程序的方式思考逻辑流程。主运行循环沿响应器链调度事件。你的MasterViewController
并没有“完成”。
(2)UIViewController
的指定初始值设定项为initWithNibName:bundle:
。您在此处使用init
将不会触及任何关联的nib文件。如果您希望从笔尖初始化MasterViewController
,则必须使用指定的初始化程序,例如
MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"your-nib-name-goes-here" bundle:nil];
nibNameOrNil
和nibBundleOrNil
只是该方法的参数名称。这是一个提示,他们可能是零。看看documentation,当这些参数为零时,该方法的行为如何。
(3)UINavigationController
是UIViewController
的子类,它按层次结构呈现内容。在这种情况下,应用程序窗口的根视图控制器是导航控制器。反过来,该导航控制器的根视图控制器是您的MasterViewController
实例。
UINavigationController
的{{3}}描述得很清楚。