0

ここでは、デフォルトのバー ボタン アイテム editButtonItem を使用します。

@property (nonatomic, assign) BOOL isEditing;

- (void)viewDidLoad {
  [super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
[self setupInterface];
}

- (void)setupInterface {
    if (self.dataElement) {
        self.isEditing = NO;
        self.nameTextField.text = self.dataElement.name;;
    } else {
      self.isEditing = YES;
      self.deleteButton.hidden = YES;
    }
  }

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
  editing = self.isEditing;
  [super setEditing:editing animated:YES];
  if (editing) {
    [self saveAction];
    [self.navigationController popViewControllerAnimated:YES];
  } else {
    self.isEditing = !self.isEditing;
  }
}

- (void)setIsEditing:(BOOL)isEditing {
  _isEditing = isEditing;

    if (isEditing) {
      self.deleteButton.hidden = NO;
      self.nameTextField.userInteractionEnabled = YES;
    } else {
      self.deleteButton.hidden = YES;
      self.nameTextField.userInteractionEnabled = NO;
    }
}

ただし、ボタンのタイトルを Edit から Done に変更することはありません。自動的に変更でき、次のように割り当てたくないことはわかっています。 self.editButtonItem.title = @"Done";

4

3 に答える 3

0

解決策が見つかりました: (void)setEditing:(BOOL)editing animation:(BOOL)animated メソッドのみを使用する必要があります。

それは誰かに役立つかもしれません:

- (void)viewDidLoad {
  [super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
[self setupInterface];
}

- (void)setupInterface {

    if (self.dataElement) {
        self.nameTextField.text = self.dataElement.name;
    }
}

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

    if (editing) {
        self.deleteButton.hidden = (self.dataElement == nil);
        self.addImageButton.hidden = NO;
        self.nameTextField.userInteractionEnabled = YES;

    } else {
        self.deleteButton.hidden = YES;
        self.addImageButton.hidden = YES;
        self.nameTextField.userInteractionEnabled = NO;

        [self saveAction];
    }
}

今のところ、すべてが正しく機能しています。

于 2017-04-05T11:05:38.903 に答える
0

navigationItemボタンをDoneボタンに変更するには、これを使用します。

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];

navigationItemボタンを編集ボタンに変更するには、これを使用します。

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered];

IB Storyboard を使用してボタンを追加した場合は、必ず識別子を設定してください。次に、コードに追加して、次のことを行います。

editButton.title = @"Done"; 
//or
editButton.title = @"Edit";
于 2017-04-03T09:59:35.907 に答える