我正在创建一个被推送到UINavigationController
的 View Controller 。我需要一个自定义的导航栏,因此我重写了 View Controller 的 navigationItem
方法。在 titleView
(UINavigationItem
的属性)中,我需要一个包含两个按钮的自定义 View 。问题:如何为这两个按钮应用 View Controller ?
包含两个按钮的 View 在 CustomTitleViewController.xib
中定义,而其 View Controller 在 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;
}
View 按预期显示在导航栏上。但是,点击按钮会使应用程序崩溃 (EXC_BAD_ACCESS
)。
错误消息:消息发送到已释放的实例 0x6e53850
。
有什么想法吗?
最佳答案
基本上,您需要保留指向 viewController 及其 View 的指针。只需在 UINavigation Controller 子类上创建强大的属性即可。因为您在这里所做的是每次调用导航项时实例化新 Controller 并在函数结束时实现它。这是一个非常快速的粗略修复: https://www.dropbox.com/s/y6ltdyj951ioncd/Navigating.zip 确保不要一直重新实例化 VC 并保留指向它的指针。 希望这有帮助。
关于ios - 为 UINavigationItem 的 titleView 设置 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12603169/