0

UITableViewControllerのナビゲーションボタンの設定に問題があります!このコントローラーはUINavigationController内にあります。

私はViewControllerをフォローしています:

@interface SettingsViewController : UITableViewController<UITextFieldDelegate, UINavigationControllerDelegate> {

   }
...........

@end

および実装ファイル:

- (void)viewDidLoad 
     {
          self.navigationItem.rightBarButtonItem = self.editButtonItem;
     }

プログラムでナビゲーションボタンアイテムを追加しています。

編集:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {

    [super setEditing:editing animated:animated];
    //[self.navigationItem setHidesBackButton:editing animated:YES];

    if (!editing) 
    {
     self.navigationItem.leftBarButtonItem = nil;
        [self save];
    }
    else 
    {
        UIBarButtonItem *cancelButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(Cancel:)];
        self.navigationItem.leftBarButtonItem = cancelButtonItem;
        cancelButtonItem = nil;
    }
}

-上記の編集機能は、ナビゲーションボタンの設定に関しては正常に機能しているようです

キャンセル:

- (IBAction)Cancel:(id)sender {
    //cancel
    self.navigationItem.rightBarButtonItem = self.editButtonItem; --> this is not setting edit button.
    self.navigationItem.leftBarButtonItem = nil;
}

-しかし、キャンセルをクリックしても、navigationitemの右バーボタン「完了」が「編集」に置き換えられません。上記のようにキャンセルメソッドでこれを行っていますが。

このコードの何が問題になっていますか?

デバッグすると、デバッグ領域に次のように表示されません。

po self.navigationItem

なぜですか?

前もって感謝します、

ラーマ

4

1 に答える 1

1

シンプル、次のようeditingに設定NO

- (IBAction)Cancel:(id)sender {
    //cancel
    self.editing = NO; //--> This is the trick!!!!!!
    self.navigationItem.rightBarButtonItem = self.editButtonItem; 
    self.navigationItem.leftBarButtonItem = nil;
}
于 2012-04-01T22:38:46.027 に答える