2012-08-22 40 views
0

嘗試在導航欄上添加和刪除導航欄項目時,某些欄項消失。iOS:導航欄項目消失並重新出現

當我在viewDidLoad下面運行代碼時,它們工作正常。

-(void) resetNavigationBarRearrangeMode { 

    NSArray*rightBarItems = [[NSArray alloc] initWithObjects:actionCancel, actionSave, actionAddItem, actionRearrange, nil]; 

    self.navBar.topItem.rightBarButtonItems = rightBarItems; 

} 

當我嘗試刪除一些欄按鈕項目時,它顯示正常。

- (IBAction)cancelClicked:(id)sender { 



    NSArray*rightBarItems = [[NSArray alloc] initWithObjects:actionRearrange, nil]; 


    self.navBar.topItem.rightBarButtonItems = rightBarItems; 

    Log(@"running cancel"); 
} 

但是,當我點擊重新排列以運行下面的代碼,這是行不通的。

- (IBAction)rearrangeClicked:(id)sender { 


     [self resetNavigationBarRearrangeMode]; 


} 

任何人都知道什麼是錯的?提前致謝。

+2

嘗試在添加新項目之前將rightBarButtonItems設置爲零。 – Scar

回答

1

barButtonItems在每次調用該方法時都會重疊。在調用重新排列方法之前,您需要重置barButtonItems,方法是將其設置爲nil

- (IBAction)rearrangeClicked:(id)sender { 

    self.navigationItem.rightBarButtonItem = nil; 
    [self resetNavigationBarRearrangeMode]; 


    } 

它會工作。請參考link以獲得進一步的幫助。

+0

我試過self.navigationItem.rightBarButtonItem = nil; ..你的意思是把self.navBar.topItem.rightBarButtonItems = nil;兩種方式都行不通。 – tipsywacky