Редактирование модели в стиле настроек Apple - PullRequest
1 голос
/ 24 октября 2010

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

Моя цель - адаптировать методы, используемые Apple в приложении «Настройки».Например, в приложении «Настройки» Apple представляет модальное представление для ввода информации для почтовых учетных записей.Пользователь должен ввести строки для имени, адреса, пароля и т. Д., И он должен выбрать один из четырех вариантов в методах аутентификации SMTP-сервера.

Должен ли я сам все это реализовать?Просто представление данных в табличном виде с использованием ячеек UITableViewCellStyleValue2 и включение редактирования дает мне только возможность добавлять или удалять записи.Однако это явно не то, что я хочу.

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

Моя текущая идея состоит в том, чтобы "привязать" UITextField в пользовательской ячейке к ключевому пути в моей модели.Т.е. я указываю путь к ключу для обновления в своей пользовательской ячейке, и с моего контроллера я получаю [model setValue:cell.textField.text forKeyPath:cell.keyPath]; при получении UITextFieldTextDidChangeNotification.Так является ли хорошей идеей обновление модели для каждого нажатия клавиши?Я сомневаюсь, что это хорошо работает.Для ячеек с множественным выбором я добавил UINavigationController в моё модальное представление.

Есть ли идеи получше?

1 Ответ

1 голос
/ 25 октября 2010

Я в конце концов решил проблему, как предложил выше.

Я представляю контроллер навигации, который показывает табличное представление, отображающее мою модель с использованием пользовательских ячеек с меткой и текстовым полем. Делегатом всех textFields является UITableViewController, который реализует методы UITextFieldDelegate -textFieldDidBeginEditing: и -textFieldDidEndEditing. Я предоставляю тег для пользовательских ячеек, чтобы я мог установить соответствующее свойство моей модели (запись базы данных SQLite).

Я попробовал это на iPhone 3G, и он работает достаточно хорошо.

В любом случае, спасибо!

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