Какой самый простой способ добавить строку в UITableView с помощью предоставленной пользователем строки?

StackOverflow https://stackoverflow.com/questions/1607743

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть простой UITableViewController в UINavigationController это отображает список строк из массива с кнопкой Редактирования / Готово по умолчанию в правой части панели навигации.

При нажатии кнопки Редактирования отображается UITableView анимируется корректно и показывает красные значки с минусом для удаления.Нажатие кнопки удалить удаляет строку из табличного представления и массив (реализованный в tableView:commitEditingStyle:forRowAtIndexPath: способ проведения UITableViewController).

Теперь я хотел бы разрешить пользователю добавлять строку в представление (и добавлять строку в базовый массив), но я не уверен, как это сделать.Метод commitEditingStyle имеет else if (editingStyle == UITableViewCellEditingStyleInsert), но я не знаю, как я могу заставить пользователя ввести строку.

Я прочитал Руководство по программированию табличного представления (более конкретно пример добавления строки в виде таблицы), но для этого, по-видимому, требуется совершенно новый UIViewController подкласс просто для того, чтобы получить строку от пользователя.

Неужели нет более простого способа?

Это было полезно?

Решение

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

SomeViewController* theViewController = [[SomeViewController alloc] init];
[self presentModalViewController: theViewController animated: YES];
[theViewController release];

Когда theViewController готов к работе, он может вызвать

[[self parentViewController] dismissModalViewControllerAnimated: YES];

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

@protocol MyViewControllerDelegate
- (void)myViewControllerDelegate: (MyViewController*)myViewController didFinishWithValue: (NSString*)theString;
@end

Тогда MyViewController будет иметь свойство делегата

@interface MyViewController
{
    id<MyViewControllerDelegate> delegate;
}
@property(nonatomic,assign) id<MyViewControllerDelegate> delegate;
@end

Если вы используете метод протокола, ваш исходный контроллер представления примет этот протокол и отклонит само модальное представление, когда получит это сообщение.

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

Другие советы

Вы можете использовать UIAlertView или подобный класс самостоятельно. Просто откройте модальное представление, чтобы запросить строку, установите правильные обратные вызовы, а затем вставьте ее в свой источник данных.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top