2012-04-08 109 views
0

所以我有一個帶有表格視圖的根視圖。我顯示工具欄是這樣的:無法將按鈕添加到表格視圖工具欄

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    self.navigationController.toolbarHidden = NO; 
} 

我實現setToolbarItems方法:

- (void)setToolbarItems:(NSArray *)toolbarItems animated:(BOOL)animated 
{ 
    UIBarButtonItem *buttonItem; 
    buttonItem = [[UIBarButtonItem alloc] initWithTitle:@"Hello" style:UIBarButtonItemStyleDone target:self action:@selector(goBack:)]; 
    self.navigationController.toolbarItems = [ NSArray arrayWithObject: buttonItem ]; 
} 

的結果是一個空tolbar。爲什麼?

enter image description here

回答

1

從文檔:

toolbarItems 與視圖控制器相關聯的工具欄項。

@屬性(非原子,保留)的NSArray * toolbarItems 討論 此屬性包含的UIBarButtonItem對象的數組,並用一個UINavigationController對象工作在>結合。如果此視圖控制器>嵌入在導航控制器界面中,並且導航>控制器顯示工具欄,則此屬性將標識要顯示在該工具欄中的項目。

您可以顯式設置此屬性的值,也可以使用> setToolbarItems:animated:方法來更改動畫工具欄項目的可見集的更改。

換句話說,試圖通過實際視圖控制器訪問它,而不是它的導航控制器,像這樣:

self.toolbarItems = [ NSArray arrayWithObject: buttonItem ]; 
+0

拋出EX_BAD_ACCESS異常... – 2012-04-08 16:29:55

+0

它停止了什麼行? – CodaFi 2012-04-08 17:11:25

+0

對不起,它的工作原理:) – 2012-04-08 17:30:31

1

但誰調用你setToolbarItems的實施?

你應該致電 setToolbarItems在你自己的看法,不重新實現它。然後,NavigationController將在實例變量中找到它們並渲染它們。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    self.navigationController.toolbarHidden = NO; 

    UIBarButtonItem *buttonItem; 
    buttonItem = [[UIBarButtonItem alloc] initWithTitle:@"Hello" style:UIBarButtonItemStyleDone target:self action:@selector(goBack:)]; 
    [self setToolbarItems: [ NSArray arrayWithObject: buttonItem ]]; 
} 
+0

這是行不通的。工具欄仍然是空的。 – 2012-04-08 16:28:46