我试图用UIButton作为自定义视图创建一个UIBarButtonItem。当我做它,它没有显示。以下是我宣布按钮的方式:
self.optionsButton = [UIButton buttonWithType:UIButtonTypeSystem];
[self.optionsButton setFrame:CGRectMake(0, 0, 30, 20)];
[self.optionsButton setTitle:@"Options" forState:UIControlStateNormal];
[self.optionsButton addTarget:self
action:@selector(presentOptions)
forControlEvents:UIControlEventTouchUpInside];
[self.optionsButton setTintColor:[UIColor clearColor]];
[self.optionsButton setBackgroundColor:[[UIColor blueColor] colorWithAlphaComponent:0.1] forUIControlState:UIControlStateSelected];
[self.optionsButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[self.optionsButton setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];
self.optionsButton.layer.cornerRadius = 5;
self.optionsButton.clipsToBounds = YES;
[self.optionsButton sizeToFit];
以下是我宣布UIToolbar的方式
self.toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 44)];
NSMutableArray *items = [[NSMutableArray alloc] init];
UIBarButtonItem *flexSpaceBefore = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[items addObject:flexSpaceBefore];
[items addObject:[[UIBarButtonItem alloc] initWithCustomView:self.optionsButton]];
UIBarButtonItem *flexSpaceAfter = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[items addObject:flexSpaceAfter];
[self.toolbar setItems:items];
[self.view addSubview:self.toolbar];
CGRect toolbarFrame = self.toolbar.frame;
toolbarFrame.origin.y = self.view.frame.size.height - toolbarFrame.size.height - self.view.frame.origin.y;
toolbarFrame.size.width = self.view.frame.size.width;
self.toolbar.frame = toolbarFrame;
以下列出了我根据尚未使用的其他帖子尝试过的事项:
[NavController setToolbarItems
- 它向我展示了工具栏(我确保我的不再是显示)但没有按钮所以,如果有人知道为什么这不起作用,我真的很感激帮助。在这一点上,我基本上希望我忽略了一些非常愚蠢的东西,因为我不想长期坚持这个:(
修改
工具栏和按钮最初声明为
@property (nonatomic, strong) UIButton *optionsButton;
@property (nonatomic, strong) UIToolbar *toolbar;
答案 0 :(得分:0)
查看代码后。我发现如果你将按钮属性保持为(弱),则不会在工具栏中添加按钮。因此,请将您的按钮属性保持为(强,非原子)
@property(strong,nonatomic) UIButton *optionsButton
As Strong意味着只要此属性指向一个对象,该对象就不会自动释放。在非ARC中,它是retain
的同义词答案 1 :(得分:0)
我明白了!就像我希望的那样,这是愚蠢的。我正在viewDidLoad
中直接设置按钮,并在辅助函数中设置工具栏。我曾经以为我在声明按钮之前调用了辅助函数,但事实证明我在按钮被声明之前调用了它...经验教训:使用断点和Xcode调试器更多。