Табличный вид аналогичен добавлению контакта в модальном представлении

#iphone #objective-c #uitableview

#iPhone #objective-c #uitableview

Вопрос:

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

Я знаю, как создать свой модальный вид и поместить в него UITableView , но как бы я создал сгруппированные редактируемые ячейки, кнопку добавить фотографию и т.д. в течение UITableView ?

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

Спасибо.

Комментарии:

1. Я также столкнулся с некоторыми трудностями в этом, лучше использовать компоненты пользовательского интерфейса, такие как UITextField, UIImageView, Ui Label .. разместите их в соответствии с вашими потребностями. Это будет слишком просто..

Ответ №1:

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

Комментарии:

1. Да, я знаю это, но всякий раз, когда я делал это в прошлом, это было много итераций одной пользовательской ячейки. В таблицах Добавить контакт или Добавить событие ячейки сильно отличаются. Как бы я реализовал это программно?

2. Вы можете проверить indexPath.row в cellForRowAtIndexPath и создать другую ячейку в соответствии с ней.

3. Да, я думал об этом, я попробую. Спасибо

4. Хорошо, итак, я сделал то, что вы пытались. Я понял, что то, что я пытаюсь создать, имеет только статический контент. Таким образом, я должен иметь возможность просто проверить indexPath.row и вернуть ячейку для этой строки. Просто. За исключением времени выполнения, у приложения возникают проблемы с поиском ячейки для возврата. Я объявил ячейку (UITableViewCell) в @interface, написал для нее свойство @ и @синтезировал его. Но когда я пытаюсь вернуть его в cellForRowAtIndexPath: , консоль выдает эту ошибку: UITableView DataSource должен вернуть ячейку из TableView:cellForRowAtIndexPath: что предполагает, что он просто не может найти ячейку для возврата. Есть идеи?

5. в cellForRowAtIndexPath: возвращает ли этот оператор ячейку;

Ответ №2:

Я думаю, что табличное представление — не лучший способ добиться этого. Хотя это выглядит как сгруппированное табличное представление, добавление в контакты сильно настроено.

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

Мой совет — создайте контроллер просмотра и добавьте изображения, текстовые представления и надписи.

Комментарии:

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

Ответ №3:

Я, наконец, понял, как это сделать с помощью saadnib. Спасибо!

Я создал пользовательские UITableViewCells в том же xib, что и TableView, и назначил их как IBOutlets в classes @interface.

Затем в TableView:cellForRowAtIndexPath: я просто проверил строку и вернул правильную ячейку в том порядке, в котором я их хотел, поскольку то, что я пытался сделать, требовало только статических ячеек таблицы.

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 0) {
        return cell0;
    }
    if (indexPath.row == 1) {
        return cell1;
    }
    if (indexPath.row == 2) {
        return cell2;
    }
    return cell0;
}
  

Я пытался сделать это бесчисленное количество раз раньше, но это не сработало, это было потому, что ячейки, которые я пытался вернуть, были нулевыми, потому что класс не знал, где они находятся, потому что они не были загружены в память из файла nib. Таким образом, добавление этой строки кода в viewDidLoad: было необходимо.

 [[NSBundle mainBundle] loadNibNamed:@"MyNibFile" owner:self options:nil];
  

Кажется, теперь все работает нормально, спасибо за вашу помощь.