我想在我的应用程序中使用NavigationController的工具栏。这个工具栏的toolbarItems假设根据呈现的视图控制器而改变。这是非常基本的。uinavigationController与自定义项目的工具栏
我想要做的是使用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的Mail应用程序具有相同的感觉。我需要使用“initWithCustomView:”方法的原因是因为其中一个图标是彩色的,这是它在常规工具栏上显示的唯一方式。现在,我浏览了苹果文档,并没有提到为什么不能调用“initWithCustomView:”方法(或者我找不到它)。
可以请某人在这个话题上闪耀一些光,帮助我指出正确的方向。在此先感谢你们。
有相同的问题。我不知道为什么它不工作......我可能还需要添加一个不同的工具栏“添加子视图”。 – 2011-03-30 07:25:22