Можем ли мы использовать initWithNibName для повторного использования одного и того же файла .xib с разными представлениями? - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть UITableView, который содержит 8 элементов (статические). Теперь, когда я нажимаю на каждую из 8 ячеек, каждая ячейка содержит 1 отдельный элемент управления.

Например:

  1. Щелкните по ячейке 1: новый вид с UIPickerView.

  2. Нажмите на ячейку 2: другой вид с UIDatePicker

  3. Нажмите на ячейку 3: еще один вид с UITextField. , ... и так далее.

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

Также я хочу, чтобы значение этих элементов управления было возвращено в detailText ячейки таблицы.

Как я могу повторно использовать один файл .xib ?? Могу ли я вызвать xib-файл с разными именами nib и проверить метод initwithnibname ??

пожалуйста, вы можете дать мне хороший пример для этого ....

Ответы [ 2 ]

0 голосов
/ 22 сентября 2011

У меня возникла блестящая идея использовать универсальные файлы перьев на экране Prefs, поэтому у меня были «перо переключателя», «перо текстового поля» и «перо текста».Я назначил элементы управления для просмотра свойств контроллера программно в cellForRowAtIndexPath.Однако по какой-то таинственной причине это не сработало.

В итоге я разработал индивидуальное перо для каждой ячейки.Оно работает.Затем в cellForRowAtIndexPath я должен определить, какая ячейка была загружена, чтобы инициализировать элемент управления нужным значением.

0 голосов
/ 22 сентября 2011

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

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

Надеюсь, это поможет вам.

EDIT:

Вы можете использовать флаг (объявленный в делегате приложения) и установить флаг в методе didSelectRowAtIndexPath на основе выбранной ячейки.

Теперь в viewDidLoad PickerView вы можете установить тот же флаг, который позволит вам узнать, какая ячейка была нажата.

Надеюсь, это поможет вам.

EDIT-1

Вы можете просто использовать NSUserDefaults, как показано ..

для ячейки-1

[[NSUserDefaults standardUserDefaults] setValue:@"Cell-1" forKey:@"CELLSELECTED"];

Для Cell-2:

[[NSUserDefaults standardUserDefaults] setValue:@"Cell-2" forKey:@"CELLSELECTED"];

Для Cell-3:

[[NSUserDefaults standardUserDefaults] setValue:@"Cell-3" forKey:@"CELLSELECTED"];

и т. Д.

Надеюсь, это поможет вам сейчас

...