我正在尝试在我的应用程序中使用 NavigationController 的工具栏。这个工具栏的toolbarItems 应该根据显示的视图控制器而改变。这是非常基本的。
我要做的是使用 UIBarButtonItem 的“initWithCustomView:”方法将自定义按钮添加到工具栏。但是,该按钮不会显示在工具栏上。但是,如果我使用“initWithTitle:”或“initWithBarButtonSystemItem:”方法创建 UIBarButtonItem,按钮就会显示出来。例如,看下面的代码:
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"edit" style:UIBarButtonItemStylePlain target:self action:nil];
NSArray *array = [[NSArray alloc] initWithObjects:item1, item2, nil];
[self setToolbarItems:array];
如果这样做了,按钮就会出现在工具栏上。但是,如果我要执行以下操作:
UIButton* replyBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[replyBtn setImage:[UIImage imageNamed:@"Reply_Message.png"] forState:UIControlStateNormal];
[replyBtn addTarget:self action:@selector(replyButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
replyBtn.frame = CGRectMake(10, 0, 40, 40);
UIBarButtonItem *replyButton = [[UIBarButtonItem alloc] initWithCustomView:replyBtn];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"edit" style:UIBarButtonItemStylePlain target:self action:nil];
NSArray *array = [[NSArray alloc] initWithObjects:item1, replyButton, item2, nil];
[self setToolbarItems:array];
在此代码中,只有 item1 和 item2 显示在工具栏上。replyButton 未显示在工具栏上。按钮所在的位置有空白区域。
如果在我创建的常规工具栏而不是 NavigationController 的工具栏上使用相同的代码,则会显示该按钮。我试图在整个应用程序中只使用一个工具栏来获得与 Apple 邮件应用程序相同的感觉。我需要使用“initWithCustomView:”方法的原因是因为其中一个图标是彩色的,这是它在普通工具栏上显示为彩色的唯一方式。现在,我查看了苹果文档,没有提到为什么不能调用“initWithCustomView:”方法(或者我找不到它)。
请有人对这个话题有所了解,以帮助我指出正确的方向。提前谢谢你们。