Разрешить пользователю редактировать текст в ячейке UITableView - PullRequest
8 голосов
/ 01 февраля 2012

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

Для простоты запоминания, какая ссылка какая,Я хочу позволить пользователю нажать кнопку с надписью «изменить», каким-то образом выбрать ячейку, для которой он хочет изменить имя, а затем ввести новое имя и переименовать ячейку в соответствии с тем, что набрал пользователь.В настоящее время я использую встроенное приложение настроек для сохранения данных ссылки.

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

Я видел другие вопросы, которые охватывают аналогичную основу, но в целомот более программной основы.

Ответы [ 3 ]

7 голосов
/ 01 февраля 2012

Пользователь не может напрямую редактировать текст ячейки просмотра таблицы. (Технически, это будет cell.textLabel.text). Однако, если они перейдут в режим «редактирования», вы можете легко отобразить UITextField в ячейке (или в модальном представлении), который предварительно заполнен текущим значением, разрешить им редактировать его, сохранить и затем обновить cell.textLabel. текст оцените сами.

6 голосов
/ 15 марта 2012

Ваши UITableView ячейки создаются здесь, обычно

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

(один из делегатов на UITableView).

Таким образом, если вы создаете подкласс UITableViewCell и открываете свойство text, вы можете делать то, что хотите, включая хранение экземпляра UITextField в ячейке. Убедитесь, что вы используете материал dequeue, как обычно.

Затем, когда пользователь касается UITableViewCell, вы можете выделить UITextField:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.thatTextFieldIMentioned becomeFirstResponder];
}

Если вы сделаете подкласс UITableViewCell UITextFieldDelegate и сделаете его делегатом для текстового поля, вы можете легко обработать эти раздражающе трудные для запоминания методы:

- (void)textFieldDidEndEditing:(UITextField *)textField {
    NSLog(@"yeah inform someone of my change %@", textField.text);
}

- (BOOL)textFieldShouldClear:(UITextField *)textField {
    return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
0 голосов
/ 01 февраля 2012

Итак, я думаю, что лучший способ - использовать стиль редактирования ячейки tabelview.Вы можете использовать редактируемый стиль набора ячеек делегата таблицы.Вы можете делать то, что хотите, когда пользователь редактирует ячейку.Установите стиль ячейки в:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

Делайте вещи, когда пользователь нажимает кнопку редактирования в:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...