将 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.barAddself.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?

在 ios 中为 UINavigationitem(左栏按钮项)设置图像

UINavigationItem 标题标签设置宽度?

将 UINavigationItem 颜色更改为黑色

从UINavigationController中控制UINavigationItem内容