Установка свойства тега подпредставления UITableViewCell - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть UITableView, ячейки которого настроены в файле NIB, поэтому я могу иметь UILabel и UITextField.

Поэтому мой cellForRowAtIndexPath выглядит так:

- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    SectionCustomCell *cell = (SectionCustomCell *)[tableView       
    dequeueReusableCellWithIdentifier: @"Section"];

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SectionCustomCell"                                                       
                            owner:self                                               
                            options:nil];

    cell = [nib objectAtIndex:0];

    // Set the label value
    [[cell inputLabel] setText:@"something"];

    // Set the textfield tag property
}

Поэтому для данного раздела / строки я собираюсь назначить некоторый текст для UILabel, определенный как inputLabel , и иметь UITextField с именем inputTextField получить некоторый текст от пользователя ,

Мой план состоит в том, чтобы установить свойство tag UITextField, чтобы я мог определить, какое поле я получаю в делегате textFieldDidEndEditing .

Теперь моя проблема, если я поставлю этот код:

 UITextField *textField = nil;
 for (UIView *oneView in cell.contentView.subviews) 
 {
    if ([oneView isMemberOfClass:[UITextField class]])
       textField = (UITextField *)oneView;
 }
 textField.tag = [indexPath row];

свойство тега установлено правильно. (Я знаю это из заявления NSLog). Однако, если я сделаю следующее, не настроен правильно. Это всегда 1, как определено в IB.

 cell.inputTextField.tag = [indexPath row];

но для меня это должно работать. Я делаю тот же принцип с настройкой текста надписей. Может ли кто-нибудь помочь мне понять, почему это не работает?

Я новичок в iOS, поэтому будьте осторожны: -)

Спасибо

Mike

1 Ответ

0 голосов
/ 02 февраля 2011

Убедитесь, что вы подключили текстовое поле и IBOutlet в IB.Если это не сработает, попробуйте поместить это в код:

NSLog(@"%i", cell.inputTextField == nil);

Если он печатает 1 на консоли, то это означает, что inputTextField равен nil, поэтому где-то между файлом nib, вашим пользовательским классом и источником данных tableviewсвязь теряется.Но, как я впервые сказал, это, скорее всего, текстовое поле неправильно подключено в IB.

...