Отправка «Редактировать» в табличное представление (отдельные представления) - PullRequest
2 голосов
/ 24 июня 2011

У меня есть ситуация, когда у меня есть ViewController, который содержит кнопку редактирования, а внутри этого другого View (который является отдельным) содержит мой просмотр таблицы.

В настоящее время я добавляю кнопку редактирования программно (как если бы вы использовали один вид). Однако, как и ожидалось, когда вы нажимаете кнопку редактирования, она меняется на «отмена», но таблица не переходит в режим редактирования (все обычные методы включены и содержат код, который я использовал бы для одного представления).

Поэтому мне интересно, как мне отправить «сообщение» от моей кнопки редактирования в контроллере представления в табличное представление (которое, как упоминалось, является отдельным). Нужно ли устанавливать делегата? или есть специальный метод, который я могу вызвать?

Я немного погуглил, но если бы кто-нибудь помог мне даже указать верное направление, я был бы очень признателен.

Ответы [ 3 ]

1 голос
/ 25 июня 2011

Я буду называть контроллер, которому принадлежит кнопка редактирования, как VC1, а контроллер, которому принадлежит (является делегатом) табличное представление, как VC2.Читайте также Делегирование .Это не дополнительная тема в разработке для iOS.

В VC2 объявите метод с именем -setTableIsEditing: (BOOL) isEditing и реализуйте его, чтобы просто установить свойство isEditing в табличном представлении, например:

- (void)setTableIsEditing:(BOOL)isEditing {
  self.myTableView.isEditing = isEditing;
}

Затем в реализации VC1 кнопки делегата touchUpInside обновите ivar bool для отслеживания режима редактирования и вызовите этот метод в VC2 с правильным параметром:

- (IBAction)editButtonPressed {
  _isEditingTable = !_isEditingTable;
  [self.myVC2Instance setTableIsEditing:_isEditingTable];
}
0 голосов
/ 24 июня 2011

Использование можно использовать

 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
 {
          // Return NO if you do not want the specified item to be editable.
   return YES;
 }

А затем реализовать

               // Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

// You can use NSUserDefaults for sending information to the controllers in another view
  //and you can manipulate them.

}
0 голосов
/ 24 июня 2011

Делегат будет работать, или вы можете отправить NSNotification от метода, которого коснулись кнопки, на который будет подписываться табличное представление. Затем вы вызываете [UITableViewCell setEditing: YES animated: YES] для каждой ячейки в зависимости от ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...