在 iOS 5 中使用 Storyboard 时无法将多个按钮分配给 UINavigationItem

2024-01-22

我是一名 iOS 开发人员,在通过代码开发 UI 方面拥有丰富的经验。

我现在正在测试 Storyboard 功能,因为我测试切换到“设计”UI 而不是实现它。过去,我在使用 nib/xib 时遇到了很多限制,因此我从未成功地进行过转换。所以这是一个关于故事板的新尝试:)

现在我的问题是 - 我正在设计一个 iPad Storyboard,它有一个导航控制器和一个 Tableview 控制器。我想添加多个 UIBarButtonItems,但我可以使用 Interface Builder 为每一侧添加一个。

代码如下:

UIBarButtonItem *b = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:nil action:nil];

UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
spacer.width = 20;

self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:self.editButtonItem, spacer, b, nil];

但为什么我不能使用 IB 添加多个按钮?只有 leftBarButtonItem、rightBarButtonItems、backBarButtonItems 的出口...

这真让我抓狂

Thanks!


我找到了一个简单的解决方案。

1)添加以下类别:

@interface UINavigationItem(MultipleButtonsAddition)
@property (nonatomic, strong) IBOutletCollection(UIBarButtonItem) NSArray* rightBarButtonItemsCollection;
@property (nonatomic, strong) IBOutletCollection(UIBarButtonItem) NSArray* leftBarButtonItemsCollection;
@end

@implementation UINavigationItem(MultipleButtonsAddition)

- (void) setRightBarButtonItemsCollection:(NSArray *)rightBarButtonItemsCollection {
    self.rightBarButtonItems = [rightBarButtonItemsCollection sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"tag" ascending:YES]]];
}

- (void) setLeftBarButtonItemsCollection:(NSArray *)leftBarButtonItemsCollection {
    self.leftBarButtonItems = [leftBarButtonItemsCollection sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"tag" ascending:YES]]];
}

- (NSArray*) rightBarButtonItemsCollection {
    return self.rightBarButtonItems;
}

- (NSArray*) leftBarButtonItemsCollection {
    return self.leftBarButtonItems;
}

@end

2)将您的项目添加到视图控制器(项目将按标签升序排序)

3) 将您的物品与leftBarButtonItemsCollection or rightBarButtonItemsCollectionUINavigationItem 的插座集合

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iOS 5 中使用 Storyboard 时无法将多个按钮分配给 UINavigationItem 的相关文章

随机推荐