2013-02-23 37 views
0

我有一個edit button,我通過self.editButtonItem獲得,我將它設置爲self.navigationItem.leftBarButtonItem,這樣當按下它時,UITableView開始編輯,它變成"Done" button。當再次按下時,視圖停止編輯,按鈕返回到正常狀態。 我也想一個"add" button到被按下的編輯按鈕時鏈接到它的不同的動作變成"Clear" button。 (就像在iPhone"Phone" app's favourites tab,只是按下編輯按鈕時的加號按鈕變成了清晰的按鈕)。一個UIBarButtonItem的兩個動作?

我真的想獲得這種方式(self.editButtonItem)的edit action和風格等,但我也想有鏈接到edit button一個額外的選擇。

我應該如何去這樣做呢?我試圖爲UIBarButtonItem創建一個類別,但我不知道該怎麼做。

謝謝。

回答

1

要創建一個按鈕,其標題可以改變的,你可以做到以下幾點:

定義一個實例變量對於按鈕:

UIBarButtonItem *_btnAddClear; 

viewDidLoad

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 

    _btnAddClear.title = editing ? @"Clear" : @"All"; 
} 

最後,該按鈕的處理程序:

_btnAddClear = [[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonItemStyleBordered target:self action:@selector(addClearAction:)]; 
_btnAddClear.possibleTitles = [NSSet setWithObjects:@"Add", @"Clear", nil]; 

既然你要當編輯/完成按鈕被點擊此按鈕的標題改變,你可以像下面的代碼添加

- (void)addClearAction:(UIBarButtonItem *)button { 
    if (self.editing) { 
     // perform "clear" action 
    } else { 
     // perform "add" action 
    } 
} 
0

給予UIBarButton的標籤,如101;

和BarButton方法寫入以下

-(void)barButtonMethod 
{ 
    UIBarButtonItem * myButton = (UIBarButtonItem *) sender; 

    if(sender.tag == 101) 
    { 
     yourBtn.tag = 102; 

     // Write Your first action method such like 

     [self ActionMethod1]; 
    } 
    else 
    { 
     yourBtn.tag = 101; 

     // Write Your second action method such like 

     [self ActionMethod2]; 
    } 
} 
0

你並不真正需要的editButtonItem新動作。

有一個屬性可以跟蹤UIViewController是否處於編輯狀態。

@property(nonatomic, getter=isEditing) BOOL editing 

爲了做到你想要什麼,你可以在您的UITableViewController下面的方法:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]   
    //Do your thing 
}