0

有人可以帮我理解为什么 insertobject atindex:0 行无法向 nsmutablearray 添加任何内容吗?谢谢。

- (void)setSplitViewBarButtonItem:(UIBarButtonItem *)splitViewBarButtonItem
{
    if (_splitViewBarButtonItem != splitViewBarButtonItem) {
        NSMutableArray *toolbarItems = [self.toolbar.items mutableCopy];
        if (_splitViewBarButtonItem) [toolbarItems removeObject:_splitViewBarButtonItem];
        if (splitViewBarButtonItem) {
            [toolbarItems insertObject:splitViewBarButtonItem atIndex:0];
            NSLog(@"setSplitViewBarButtonItem: toolbarItems has %u objects",toolbarItems.count);
        }
        self.toolbar.items = toolbarItems;
        _splitViewBarButtonItem = splitViewBarButtonItem;
    }
}

工具栏是之前在同一个 .m 文件中定义的私有属性,因此

@property (nonatomic, weak) UIToolbar *toolbar;

我也尝试过更换线路

NSMutableArray *toolbarItems = [self.toolbar.items mutableCopy];

NSMutableArray *toolbarItems = [[NSMutableArray alloc]init];
toolbarItems = [self.toolbar.items mutableCopy];

但仍然没有向工具栏项添加任何内容。调试器始终显示 splitViewBarButtonItem 为非空,并且我的 NSLog 一直打印为零。

非常感谢。

4

2 回答 2

0

我设法通过替换 if (_splitViewBarButton)... 线来使 insertObject 线工作

if (_splitViewBarButtonItem) {
    toolbarItems = [self.toolbar.items mutableCopy];
    [toolbarItems removeObject:_splitViewBarButtonItem];
} else {
    toolbarItems = [[NSMutableArray alloc]init];
}

换句话说,如果设置了 _splitViewBarButtonItem(有一个条形按钮),则将其删除。否则,需要分配初始化它。

我现在的问题是作业

self.toolbar.items = toolbarItems;

不起作用,并且栏按钮现在显示在详细信息视图中。有什么建议么?

于 2012-11-30T19:27:13.293 回答
0

好的,实际上我真正需要的是让我的工具栏属性成为一个 IBOutlet,即改变

@property (nonatomic, weak) UIToolbar *toolbar;

@property (nonatomic, weak) IBOutlet UIToolbar *toolbar;

通过此更改,我最初发布的代码可以按原样工作。我想工具栏在未定义为 IBOutlet 时未正确实例化。

于 2012-11-30T21:17:07.307 回答