2012-03-14 3 views
0

У меня есть статический UITableView, который я заполняю через NSDictionary в методе cellForRowAtIndexPath.Добавление программных программ в UITableViewCell в статическом UITableView

NSString *key = [sectionKeys objectAtIndex:[indexPath section]]; 
NSArray *contents = [sectionContents objectForKey:key]; 
NSString *contentForThisRow = [contents objectAtIndex:[indexPath row]]; 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

[[cell textLabel] setText:contentForThisRow]; 

Думает, что хорошо работает, мне также нужно добавить элементы управления к tableviewcells, и каждая ячейка имеет различные элементы управления. Когда я программно добавляю UITextField в ячейку1, представление после запуска отлично до 5 разделов, но когда я просматриваю свой табличный вид дальше, ячейка раздела 6 также получает элемент управления UITextField. То же самое происходит с UIDatePicker, что первые 5 разделов моего табличного представления хороши, но при прокрутке tableview последние два раздела также получают элемент управления UIDatePicker.

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

ответ

4

То, что я понял:

Компоновка ваших клеток становится перепутались и управления из одной клетки перейти к другой.

Что я предлагаю:

Это общая проблема, я столкнулся с этим некоторое время назад, и это было очень сложно. Через несколько часов работы в Интернете я нашел решение: используйте разные идентификаторы ячеек для ячеек с различными элементами управления.

Пример:

5 клеток: 2 клетки с только UITextField, одна ячейка с UITextField и UILabel и 2 клетки с UIImageView. Используйте 3 разных идентификатора ячейки. 1 для ячеек с только UITextField, 1 для ячеек с UIImageView и 1 для ячейки с UITextField и UILabel.

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

+0

Я создаю ячейки динамически, а затем, как назначить им идентификатор, будет ли назначение идентификатора и создание элементов управления выполняться в cellForRowAtIndexPath? – Firdous

+1

Да, просто измените значение «CellIdentifier» на все, что вам нужно – Novarg

+0

работает как гепард :) спасибо – Firdous

Смежные вопросы