将 UINavigationItem 设置为 nil 后,如何重新添加它?
Posted
技术标签:
【中文标题】将 UINavigationItem 设置为 nil 后,如何重新添加它?【英文标题】:How do I add back a UINavigationItem once I've set it to nil? 【发布时间】:2013-06-14 03:59:55 【问题描述】:我有一个 UIBarButton 项目设置为 UINavigationBar 上的右键。我还有一个 UISegmentedControl 设置为 titleView。这些都是使用 Interface Builder 添加的。
这是我用来删除项目的代码:
[self.navigationItem setRightBarButtonItems:nil animated:YES];
[self.navigationItem setTitleView:nil];
问题是,既然我已经将它们设置为nil
,我该如何将它们重新添加到 UINavigationBar?
项目是self.barAdd
和self.segLibrary
。如何从 .xib 重新加载它们?
【问题讨论】:
【参考方案1】:您可以使用类似于以下的代码:
- (void) addAddFolderButton
NSMutableArray *rightBarButton = [NSMutableArray arrayWithArray:self.navigationItem.rightBarButtonItems];
[rightBarButton addObject:barAdd];
[rightBarButton addObject:segLibrary];
[self.navigationItem setRightBarButtonItems:rightBarButton animated:YES];
【讨论】:
不,它崩溃了:'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
您的对象(barAdd 和 segLibrary)必须被释放。它们是 ivars,所以一旦你取消引用它们就不会被释放?我一直使用这个代码。
我将它们设置为 weak
而不是 strong
。将它们设置为strong
修复了它。感谢您的提示!以上是关于将 UINavigationItem 设置为 nil 后,如何重新添加它?的主要内容,如果未能解决你的问题,请参考以下文章
为 UINavigationItem 的 titleView 设置视图控制器
如何使用外观代理设置 UINavigationItem 的 backBarButtonItem?