如何初始化UINavigationController提供的自定义视图?

时间:2012-01-24 14:22:23

标签: ios cocoa-touch uinavigationcontroller uikit storyboard

我按照iOS Developer Library中的CoreDataBooks示例设计了我的代码。当在UINavigationControl中按下+ -Button时,应该出现一个自定义AddViewController的segue,类似于iOS AddressBook中的视图。

我使用自定义视图控制器而不是UITableView控制器,就像在CoreDataBooks中一样。因此,在CoreDataBooks中呈现视图控制器的代码如下所示:

AddViewController *addViewController = [[AddViewController alloc] initWithStyle:UITableViewStyleGrouped];
addViewController.delegate = self;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addViewController];

[self.navigationController presentModalViewController:navController animated:YES];

我的看起来像这样:

AddViewController *addViewController = [[AddViewController alloc] init];
[addViewController setDelegate: self];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addViewController];

[self.navigationController presentModalViewController:navController animated:YES];

所以它基本相同,但我使用init初始化AddViewController,而使用UITableViewController继承的initWithStyle方法而不是

如何正确初始化自定义视图控制器?我尝试在init方法中调用[super init],但这没有帮助。

1 个答案:

答案 0 :(得分:0)

因为您正在使用Storyboard来设计应用程序流,所以您应该在故事板中将模式表示定义为模态segue,为segue指定标识符并覆盖根视图控制器中的prepareForSegue:sender:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"MySegueIdentifier"]) {

        AddViewController *destination = [[[segue destinationViewController] viewControllers] objectAtIndex:0];
        [destination setDelegate:self];
    }
}