当appdelegate.m将控制转移到viewController时调用哪个方法

时间:2013-08-25 10:30:57

标签: objective-c uiviewcontroller

我学习了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];
}

和其他方法......

我的问题是

  1. AppDelegate在MasterViewController中传输控件的方法。在MasterViewController“完成”它的工作后,控件是否会回来,或者只是循环?
  2. MasterViewController如何获取初始化的xib名称(它与m文件名称相同吗?即它是什么意思 - nibNameOrNil bundle:nibBundleOrNil)
  3. 我看到了导航控制器的参与,但是我不明白它是如何连接到viewcontroller ....
  4. 如果你发现我的误解点 - 请耐心解释......我觉得在此之后我将能够开始......

1 个答案:

答案 0 :(得分:0)

(1)你正在以程序的方式思考逻辑流程。主运行循环沿响应器链调度事件。你的MasterViewController并没有“完成”。

(2)UIViewController的指定初始值设定项为initWithNibName:bundle:。您在此处使用init将不会触及任何关联的nib文件。如果您希望从笔尖初始化MasterViewController,则必须使用指定的初始化程序,例如

MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"your-nib-name-goes-here" bundle:nil];

nibNameOrNilnibBundleOrNil只是该方法的参数名称。这是一个提示,他们可能是零。看看documentation,当这些参数为零时,该方法的行为如何。

(3)UINavigationControllerUIViewController的子类,它按层次结构呈现内容。在这种情况下,应用程序窗口的根视图控制器是导航控制器。反过来,该导航控制器的根视图控制器是您的MasterViewController实例。

UINavigationController的{​​{3}}描述得很清楚。