我想在我的應用程序中使用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