2014-02-01 2 views
1

Я хотел бы знать, как получить экземпляр моего обычая UITableViewCell, так что я могу установить UITextField в качестве первого ответчикаКак инициализировать пользовательские UITableViewCell из didSelectRowAtIndexPath

Это, как я установить пользовательские ячейки внутри cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    static NSString *CellIdentifier = @"Cell"; 
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[CustomFinishingCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CustomFinishingCell *cell = [tableView cellForRowAtIndexPath:indexPath]; // error 
    [cell.widthTexField becomeFirstResponder]; 

Этот это ошибка я получаю

Несовместимых типов указателей инициализацию «CustomFinishingCell *» с выражением типа «UITableViewCell *»

+0

ошибок компилятора или ошибку во время выполнения? – bshirley

ответ

3

Вы забыли забрасывать UITableViewCell возвращаемый cellForRowAtIndexPath: в подкласс

CustomFinishingCell *cell = (CustomFinishingCell *)[tableView cellForRowAtIndexPath:indexPath]; // error 

Кроме того, я не знаю, если вы просто опустили это из кода, который вы опубликовали, но как вы никогда не объявляли ячейку в cellForRowAtIndexPath:

CustomFinishingCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
+0

относительно вашей второй строки кода, я думал, что эта строка кода ** cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier]; ** была в essance, делая то же самое ... не могли бы вы подробно остановиться на этом? просто у меня возникли проблемы, когда я выбираю nextUITableViewCell за пределами представления, не создавая себя .. поэтому я получаю ошибки, которые я просто не знаю почему. – HurkNburkS

0

попробуйте добавить бросок:

CustomFinishingCell *cell = (CustomFinishingCell*)[tableView cellForRowAtIndexPath:indexPath]; 

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

0
  1. initWithStyle является UITableViewCell «s инициализировать метод, вы переопределить его и вернуть CustomFinishingCell?

  2. Добавление литого

    CustomFinishingCell *cell = (CustomFinishingCell*)[tableView cellForRowAtIndexPath:indexPath]; 
    
Смежные вопросы