Какой самый простой способ добавить строку в UITableView с предоставленной пользователем строкой? - PullRequest
1 голос
/ 22 октября 2009

У меня есть простой UITableViewController в UINavigationController, который отображает список строк из массива с кнопкой по умолчанию Edit / Done с правой стороны панели навигации.

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

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

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

Нет ли более легкого пути?

Ответы [ 2 ]

2 голосов
/ 23 октября 2009

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

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

Когда theViewController готов уйти, он может вызвать

[[self parentViewController] dismissModalViewControllerAnimated: YES];

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

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

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

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

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

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

0 голосов
/ 22 октября 2009

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

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

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