0

我正在创建一个视图控制器,它被推送到UINavigationController. 我需要一个自定义导航栏,因此我重写navigationItem了视图控制器的方法。在titleView(属性UINavigationItem)中,我需要一个包含两个按钮的自定义视图。问题:如何为这两个按钮应用视图控制器?

包含两个按钮的视图在 中定义CustomTitleViewController.xib,而其视图控制器在CustomTitleViewController类中定义。

这是我返回导航项 ( MainViewController.m) 的方式:

- (UINavigationItem *)navigationItem
{
    UINavigationItem *navItem = [[UINavigationItem alloc] init];

    UIViewController *customTitleViewController =
        [[CustomTitleViewController alloc] initWithNibName:@"CustomTitleViewController"
                                                    bundle:[NSBundle mainBundle]];

    navItem.titleView = [customTitleViewController view];

    return navItem;
}

正如预期的那样,该视图显示在导航栏上。但是,点击按钮会使应用程序崩溃 ( EXC_BAD_ACCESS)。

错误信息:message sent to deallocated instance 0x6e53850

有任何想法吗?

4

1 回答 1

1

基本上,您需要保留指向 viewController 及其视图的指针。只需在您的 UINavigation 控制器子类上创建强大的属性。因为您在这里所做的是在每次调用导航项时实例化新控制器并在函数结束时实现它。这是一个非常快速的粗略修复: https : //www.dropbox.com/s/y6ltdyj951ioncd/Navigating.zip 确保不要一直重新实例化 VC 并保持指向它的指针。希望这有帮助。

于 2012-09-26T14:02:25.060 回答