我是一名 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 rightBarButtonItemsCollection
UINavigationItem 的插座集合
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)