2011-09-12 23 views
19

ナビゲーションバーにボタンを実装すると、ユーザは&のUITableViewの行を並べ替えることができます。UITableView編集/完了ボタン

自分のUITableViewの編集/完了ボタンを持つために私自身のツールバーボタンを作成する必要がありますか?

答えて

44

ちょうどあなたのテーブルビュースーパーがUINavigationControllerであればそれは動作しますあなたのUITableViewController

self.navigationItem.leftBarButtonItem = self.editButtonItem; 

viewDidLoadにこの行を追加します。この行には、編集モードでテーブルをプッシュするボタンが追加されます。

+0

は私が、しようとしたが、それは編集モードの内と外の私のtableViewをプッシュしていません。私が処理しなければならない代理コールバックはありますか? –

+1

はView Controllerのサブクラスで、 – Robin

+0

@robinのサブクラスです。いいえ、そうではありません。 –

20

何一般的に行われていますが、独自のカスタムBarbuttonItemを作成し、次に右のナビゲーションバーボタンアイテムとして、このボタンを割り当てるです:

UIBarButtonItem *barButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"Edit" 
                   style:UIBarButtonItemStylePlain 
                   target:self 
                   action:@selector(toggleEdit)]; 

self.navigationItem.rightBarButtonItem = barButtonItem; 
[barButtonItem release]; 

ここtoggleEdit方法です:あなたがあなたのボタンをしたい場合

-(void)toggleEdit{ 
      [self.tableView setEditing:!self.tableView.editing animated:YES]; 

      if (self.tableView.editing) 
       [self.navigationItem.rightBarButtonItem setTitle:@"Done"]; 
      else 
      [self.navigationItem.rightBarButtonItem setTitle:@"Edit"]; 
} 
0

青の「完了」カラーとプレーンな「編集」カラーを切り替えるには、rightBarButtonItemを青のUIBarButtonItemStyleDoneまたはこのようなプレーンのUIBarButtonItemStylePlainに設定します

self.navigationItem.rightBarButtonItem.style = UIBarButtonItemStyleDone; 
6
UIButton *btnname=[UIButton buttonWithType:UIButtonTypeSystem]; 
[btnname setFrame:CGRectMake(0,0,110,35)]; 
[btnname setFont:[UIFont boldSystemFontOfSize:18]]; 
[btnname setTitle: @"Delete" forState: UIControlStateNormal]; 
[btnname setTitleColor:UIColorFromRGB(0xCC0707)  forState:UIControlStateNormal]; 
btnname.backgroundColor=UIColorFromRGB(0xE6E7E8); 
btnname.showsTouchWhenHighlighted = YES; 
[btnname addTarget:self 
      action:@selector(toggleEdit) 
forControlEvents:UIControlEventTouchDown]; 
UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:btnname]; 
self.navigationItem.rightBarButtonItem = barItem; 


-(void)toggleEdit{ 
    [self.tableView setEditing:!self.tableView.editing animated:YES]; 

    if (self.tableView.editing) 
     [btnname setTitle: @"Done" forState: UIControlStateNormal]; 
    else 
     [btnname setTitle: @"Delete" forState: UIControlStateNormal]; 
} 
+0

これは私の仕事です。 – Saravanan

4

ここで私が使用スウィフトバージョンです:

func clickedEditButton(button: UINavigationItem) { 
    tableView.setEditing(!tableView.editing, animated: true) 

    if tableView.editing { 
     button.rightBarButtonItem?.title = "Done" 
    } else { 
     button.rightBarButtonItem?.title = "Edit" 
    } 
} 
0

は、あなたが最初のタイトルを初期化する必要があることを確認してください。ストーリーボード、

その後

enter image description here

することで、ボタンがあるが

@IBAction func editBtnPressed(_ sender: UIBarButtonItem) { 
     tableView.setEditing(!tableView.isEditing, animated: true) 

     if tableView.isEditing { 
      self.editButton.title = "Done" 
     } else { 
      self.editButton.title = "Edit" 
     } 
    } 
関連する問題