2014-02-04 3 views
1

У меня очень неприятная проблема, что я не уверен, ПОЧЕМУ это происходит.iOS 7 TableView dequeue не работает

У меня есть представление таблицы, у меня есть правильный идентификатор в ячейке, но он по-прежнему дает мне «неспособность деактивировать ячейку с идентификатором Cell» - должен зарегистрировать ниб или класс для идентификатора или подключить ячейку прототипа в раскадровке ", когда я запускаю его.

код выглядит следующим образом

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    NSDictionary *event = [self.events objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [event objectForKey:@"name"]; 

    return cell; 
} 

Любая помощь будет большим, потому что я хочу рвать на себе волосы. Стол подключается к этому классу, а затем Cell имеет, что @ «Cell» Identifier

+0

Где вы создали ячейку и установить идентификатор 'Cell'? – Wain

+0

Можете ли вы предоставить скриншот файла xib или раскадровки. –

+0

Я приеду домой, но это то же самое место, что и скриншот, уже размещенный ниже. Вы нажимаете на ячейку, а затем на вкладке атрибутов, которую я набрал в «ячейке» – fwhenin

ответ

2

Перепроверьте все 4 шаги



ШАГ 1: Ваш cellForRowAtIndexPath должен выглядеть следующим образом

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

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

NSDictionary *event = [self.events objectAtIndex:indexPath.row]; 
cell.textLabel.text = [event objectForKey:@"name"]; 

return cell; 
} 



ШАГ 2: Ваш «ViewController.м»Файл должен выглядеть следующим образом

#import "ViewController.h" 

@interface ViewController()<UITableViewDataSource,UITableViewDelegate> 

@end 



ШАГ 3:. ПРОВЕРЬТЕ - Нажмите на вид контроллера двигаться к инспектору подключения - Смотрите, если какие-либо другие нежелательные соединения присутствуют в этом инспекторе

Your Controller inspector should like this



ШАГ 4: Tableview атрибут ячейки инспектор хотел бы это]

Your Tableview cell attribute inspector should like this

0

Вы не проверяла ячейки является выделить или нет .. Вы можете попробовать ниже код ..

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    // add a placeholder cell while waiting on table data 

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

. Если ячейка зарегистрирована правильно, то dequeue создаст ячейку для вас, если потребуется, поэтому проверка и ручное создание не требуются ... – Wain

1

Вместо :

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

Try:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

, если это не работает после

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

добавить:

if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; 
} 
0

в схеме документа, убедитесь, что ваш прототип UITableViewCell является дочерним UITableView. Storyboard Document Outline

В Attribute Inspector, убедитесь, что ваш идентификатор ячейки и стиль ячейки правильно установлены в раскадровке:

storyboard screenshot of Table View Cell attribute inspector

В Удостоверении инспектора, убедитесь, что вы класс установлены UITableViewCell: storyboard screenshot of Table View Cell identity inspector

+0

Я уже сделал что – fwhenin

+0

и прототип ячейки в Identity Inspector имеют ваш набор классов? Ваше утверждение «_table_ связано с этим классом» в вашем вопросе немного неряшливо. Вам нужно подключить ячейку прототипа к подклассу 'UITableViewCell'. – user3071962

+0

ОК, так что я имел в виду, что у меня есть файлы EventTableViewController.h и m. в раскадровке у меня есть вкладка «Атрибут» EventTableViewController как класс, связанный с Table Viewcontroller на раскадровке – fwhenin

1

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

static NSString *cellIdentifier = @"Cell"; 
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellIdentifier]; 

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

+0

Я уже сделал это, у него есть одна и та же строка в Идентификаторе, что и в коде ... но он все еще говорит «невозможно удалить из очереди ...» – fwhenin

0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *CellIdentifier = [NSString stringWithFormat:@"cell %d",indexPath.row]; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    cell = nil; 

    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

     NSDictionary *event = [self.events objectAtIndex:indexPath.row]; 
     cell.textLabel.text = [event objectForKey:@"name"]; 

    } 

    return cell; 
} 
Смежные вопросы