2015-05-27 2 views
0

По какой-то причине мой метод представления таблицы cellForRowAtIndexPath:(NSIndexPath *)indexPath не вызывается. Вот мой код:Таблица View's cellForRowAtIndexPath: не называется

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    messages = [[NSMutableArray alloc]init]; 
    chatTable = [[UITableView alloc]init]; 
    chatTable.delegate = self; 
    chatTable.dataSource = self; 
} 


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    NSLog(@"Called Count %i",messages.count); 
    return messages.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"Was Called"); 

    static NSString *cellId = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; 
    NSDictionary *message = [messages objectAtIndex:indexPath.row]; 
    NSString *mess = [message objectForKey:MSChatMessage]; 
    cell.textLabel.text = mess; 

    return cell; 
} 

Вот что я сделал:

  • Linked источника данных и delgate

  • связали IBOutlet для табличного

  • Установите переключатель идентификатор ячейки к соте

  • Убедился, что массив не был равен нулю (журнал дает правильное число)

  • Пробовал с помощью статического NSMutableArray, и она работала, но как только я вернулся в свой динамический массив это не

  • «Назвался "никогда не появляется в журнале

+0

ваша установка выглядит правильно, мне кажется, наиболее вероятно, что вы 'messages' пуст, поэтому нет необходимости в системе, чтобы позвонить' cellForRowAtIndexPath' ... вы уверены, что это не пустая? – nburk

+0

Положительный, Ive напечатал его несколько раз –

ответ

2

вы инициализирован сообщение:

messages = [[NSMutableArray alloc]init]; 

Но тогда вы никогда не заполняется массив.

cellForRowAtIndexPath делегат вызывается на основе подсчета массива данных.

Убедитесь следующей строкой:

NSLog(@"Called Count %i",messages.count);

печатает отсчет больше, чем 0

+0

Я не потрудился показать код, который заполняет массив, и он произвел 17, а не 0 –

+0

@MattSarabyte ok любая причина для создания таблицы программно 'chatTable = [[UITableView alloc] init] «Попробуй сделать это с раскадными досками – meda

+0

Я тебе обязан. Я использовал раскадровку, я понятия не имею, почему я инициализировал chatTable, удалив эту строку, чтобы она работала. Глупые ошибки, спасибо! –

1

Когда вы связали UITableView с XIB или раскадровки, как IBOutlet. Почему вы снова создаете UITableView «chatTable = [[UITableView alloc] init]» Удалите эту строку из кода и попробуйте. Также установите делегат и источник данных из Interface Builder и удалите chatTable.delegate = self; & chatTable.dataSource = self;

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

0

я хоп это помогает ..

в .h файле ..

NSMutableArray * messages; 

в .m файл ..

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Initialization of NSMutableArray. 
messages = [[NSMutableArray alloc]init]; 
} 

и убедитесь, что его не ноль здесь. ,

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
NSLog(@"Called Count %i",messages.count); 
return messages.count; 
} 
Смежные вопросы