1

我有UItable項目。我有導航欄等的表「類別」一項我的休閒區的另一UITable這樣的:無法在導航欄上添加按鈕

CategoryTableViewController *b = [[CategoryTableViewController alloc]init]; 
     [self.navigationController pushViewController:b animated:YES]; 
     [b release]; 

現在我想在導航欄添加「添加」按鈕,我*添加UINavigationBarItem的.xib它連接以網點和增加它像這樣在viewDidLoad中:

self.navigationItem.rightBarButtonItem = self.addButton; 

這不起作用(Add按鈕爲空),但是當我把相同的代碼。我第一次UITable添加按鈕,它工作正常,「添加」按鈕被添加。

這裏有什麼問題?

+0

也許我是用我的答案加快速度,但是「我的第一個UITable」究竟意味着什麼?相同的viewController?哪種方法? – 2011-03-11 13:17:45

+0

當我的應用程序啓動時,它首先顯示帶有數據的UITable。當我點擊類別時,會推送第二個UITable。如果我將按鈕添加到第一個表,它會起作用,但第二個則不行。 – 1110 2011-03-11 13:21:27

+0

和兩個tableviewcontroller實例共享相同的類? – 2011-03-11 13:24:13

回答

2

在這應該顯示在viewDidLoad中在導航條型的按鈕的ViewController()方法:

self.addToolbarButton = [[[UIBarButtonItem alloc]   
initWithTitle:@"Add", nil) 
    style:UIBarButtonSystemItemAdd 
    target:self 
    action:@selector (add)] autorelease]; 
self.navigationItem.leftBarButtonItem = addToolbarButton; 

這將增加一個「添加」風格按鈕向左導航欄中其中調用選擇器方法:

-(void) add {...} 

當它被點擊時處於相同的類。在同一個類中的這個方法中,你可以指定你的添加邏輯。如果此方法應放置在不同的類中,請將目標設置爲該目標。

這是解決此問題的程序化方法。方法「 - (void)add」是你的Outlet在.xib方法中的作用。

對於您的.xib方法,您應該驗證navigationBarButton的Outlet屬性是否設置爲保留。

+0

這工作。我保留IBOutlet並將其連接到示例項目中,但在我的應用程序中沒有。但是這種編程方式很有效。感謝:) – 1110 2011-03-11 13:37:39

+0

我總是以編程方式做導航欄問題導致我從來沒有得到它與IB工作正常:) – 2011-03-11 13:39:06

0

[super viewDidLoad];第一次調用viewDidLoad方法嗎?

如果不嘗試把它放在viewDidLoad的開頭。

+0

是的,super viewDidLoad是該方法中的第一個。 – 1110 2011-03-11 13:20:13

1

self.addButton爲NULL,因此請確保它不爲NULL。從代碼創建一個按鈕。

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneMeasuring:)];