2014-01-14 3 views
0

Так у меня есть пользовательские UITableViewCell и у меня есть код, который выглядит, как это в методе cellForRowAtIndexPathПользовательские Tableview ячейки не показывая

defaultCell = [self.listView dequeueReusableCellWithIdentifier:DefaultCellIdentifier]; 
     if(defaultCell){ 
      defaultCell = [[DefaultCell alloc]init]; 
     } 

Условный передается и ячейка по умолчанию alloced и inited. Тем не менее, ячейка показывает, что она пуста (файл xib не существует). Я регистрируя перо с Tableview, как это -

UINib* defaultNib = [UINib nibWithNibName:@"DefaultCell" bundle:nil]; 
    [self.listView registerNib:defaultNib forCellReuseIdentifier:DefaultCellIdentifier]; 

Так почему я получаю пустой взгляд в моей ячейке таблицы вместо того, что я вижу в моем файле XIb? Я думаю, это потому, что я не выделяю ячейку с помощью xib.

Что происходит?

ответ

0

UPDATE 1 - коррекция кода Это правильный способ показать пользовательские ячейки в вашем cellForRowAtIndexPath методе сегодня я узнал кое-что:

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

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; 

    //Set the label's data properties that you may have assuming you have a datasource. 
    cell.customLabelICreated.text = [myStringsDataSourceArray objectAtIndexPath:index.row]; 
+0

Правильный способ - зарегистрировать наконечник для ячейки tableview. Тогда вам не нужно проверять, была ли ячейка удалена или нет, потому что метод создаст новую ячейку из nib, если она не может удалить ее. – Abizern

+0

@Abizern Пожалуйста, пожалуйста, не злоупотребляйте системой голосования вниз, пытаясь заставить OP взглянуть на ваше сообщение вместо этого. Если в моем собственном ответе была сделана небольшая ошибка, не стесняйтесь приспосабливаться и делиться своими знаниями в одиночку. И обратитесь к этой ссылке: stackoverflow.com/help/privileges/vote-down о том, как использовать систему downvoting. как цитируется из stackoverflow: «Используйте ваши downvotes всякий раз, когда вы сталкиваетесь с грубым неряшливым, не затраченным на усилия сообщением или ответ, который явно и, возможно, опасно неверен». - Pavan 1 мин. Назад – Pavan

0

сначала зарегистрировать перо для ячейки просмотра таблицы следующим образом:

[self.tableView registerNib:[UINib nibWithNibName:@"nib name" bundle:nil] forCellReuseIdentifier:DefaultCellIdentifier]; 

в cellForRowAtIndexPath. вам не нужно явно выделять ячейку.

Вместо этого вы можете сделать что-то вроде этого

defaultCell = [self.listView dequeueReusableCellWithIdentifier:DefaultCellIdentifier]; 

[defaultCell configureCell];//In configure cell method set any images or labels u want. 
return defaultCell 

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

0

Этот вызов является неправильным по двум причинам:

if(defaultCell){ 
    defaultCell = [[DefaultCell alloc]init]; 
} 

Во-первых, она должна быть if(!defaultCell)

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

Итак, на самом деле вам даже не нужен этот маленький блок кода.

+0

Пожалуйста, пожалуйста, не злоупотребляйте системой голосования вниз, пытаясь заставить OP взглянуть на ваш пост. Если в моем собственном ответе была сделана небольшая ошибка, не стесняйтесь приспосабливаться и делиться своими знаниями в одиночку. И обратитесь к этой ссылке: http: // stackoverflow.com/help/privileges/vote-down о том, как использовать систему downvoting. как указано в stackoverflow: «Используйте ваши downvotes всякий раз, когда вы сталкиваетесь с« грубым sloppy »,« no-effort-expended »post или ответом, который« явно »и, возможно,« опасно неверен ». – Pavan

+0

@Pavan a) Ваш ответ неверен (IMHO), потому что он уже зарегистрировал наконечник для ячейки, и вам не нужно делать проверки. и б) получить хватку, приятель. – Abizern

+0

Да, мой метод, который я узнал из интернет-источника, оказался неправильным. Пожалуйста, не злоупотребляйте системой голосования, чтобы попытаться привлечь OP к вашему ответу. Как я сказал ранее, если кто-то сделал небольшую/большую ошибку, лучше всего, чтобы вы могли подтолкнуть их в правильном направлении, а не убить их :) Я исправлю свой пост. Я скоро схвачусь, как люди вроде тебя перестанут издеваться над другими. – Pavan

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