2014-02-11 4 views
0

Это может быть очень глупый вопрос, но у меня очень мало знаний о развитии Xcode, Objective-C и iOS в целом.Сделать «редактирование» кнопки триггерного режима редактирования в UITableView

У меня есть UITableViewController с количеством ячеек. Я получил функции «добавить» и «удалить» («проведите по удалению»), но я не могу понять, как подключить кнопку «редактировать» к функции, которая вызовет режим редактирования этого TableView, поэтому я могу изменить порядок порядок элементов.

Я не-комментировал эти функции:

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

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath 
{ 
    XYZToDoItem *itemToMove = [self.toDoItems objectAtIndex:fromIndexPath.row]; 
    [self.toDoItems removeObjectAtIndex:fromIndexPath.row]; 
    [self.toDoItems insertObject:itemToMove atIndex:toIndexPath.row]; 
    [self.tableView reloadData]; 
} 

Как вы можете видеть, я также сделал несколько дополнений к методу moveRowAtIndexPath после документации.

Кроме того, существуют следующие функции;

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     // Delete the row from the data source 
     [self.toDoItems removeObjectAtIndex:indexPath.row]; 
     [self.tableView reloadData]; 
    } 
} 

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

Как ранее заявлял «салфетки для удаления» функция работает, я не знаю, как, но я просто только раскомментировать эти последние два метода и редактируются оном немного, чтобы соответствовать мой код.

Чтобы уточнить, что я спрашиваю, как я могу связать кнопку «Изменить», которую я имею в своем навигационном контроллере, чтобы вызвать режим редактирования для TableView, тем самым показывая три строки (?), Известные из Режим редактирования TableViews (и позволяет мне перетаскивать элементы в требуемый заказ).

Заранее благодарим за вашу помощь! :)

ответ

0

Если это UITableViewController, у вас есть два варианта. Либо используйте встроенную кнопку редактирования, которая даст вам автоматическое изменение кнопки «Редактировать/Готово». Используйте self.editButtonItem в навигационной панели:

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

Или вы можете использовать setEditing:animated для изменения редактирования состояния tableViewController:

// self is a UITableViewController 
[self setEditing:YES animated:YES]; 

Если ViewController не подкласс UITableViewController вы можете установить режим редактирования Tableview:

[self.tableView setEditing:YES animated:YES]; 

Если у вас есть UITableViewController, вы должны использовать первый способ, потому что это наиболее удобно.

+0

Спасибо, миллион, первое решение сработало! :) Единственное, что сейчас, если я пойду на раскадровку, там не будет кнопки редактирования. В прошлый раз я попытался использовать элемент «bar button», а затем «identifier: edit». Если бы я хотел пойти так, как бы я решил, чтобы кнопка редактирования переключила режим редактирования? – Aleksander

Смежные вопросы