Значения над UITextField, помещенные над UITableViewCell, теряются - PullRequest
1 голос
/ 05 июля 2011

Я поместил UITextField над каждой ячейкой UITableView. При прокрутке ячейки UITableView текст поверх UITextField теряется. Что я могу сделать, чтобы предотвратить это?

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Вам необходимо отследить NSMutableArray, в котором хранятся значения текстового поля. Сделайте начальные значения @ "". Когда вы вставляете текстовое поле в ячейку, получите значение из соответствующего значения в массиве.

Если текстовое поле закрывается, сделайте что-то подобное, чтобы сохранить значения текстового поля в массиве:

    -(BOOL)textFieldShouldReturn:(UITextField *)textField 
    {
    UITableViewCell *cell=(UITableViewCell *)textField.superview;
    NSIndexPath *indexPath = [table indexPathForCell:cell];

    NSMutableArray *rows=[sectionArray objectAtIndex:[indexPath section]];
    NSString *string=[rows objectAtIndex:indexPath.row];
    string=textField.text;
    [[sectionArray objectAtIndex:[indexPath section]]replaceObjectAtIndex:[indexPath row] withObject:string];
    [textField resignFirstResponder];
    return YES; }

    - (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *myCellId= @"myDateCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myCellId]; 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                  reuseIdentifier: myCellId]; 

    CGRect textFieldFrame;
    CGRect labelFrame;
    labelFrame = CGRectMake(cell.frame.origin.x+45, cell.frame.origin.y+3, labelWidth, cell.bounds.size.height-5);
    textFieldFrame = CGRectMake(cell.frame.origin.x+labelWidth+15, cell.frame.origin.y+12 ,cell.
    UILabel *label = [[UILabel alloc]initWithFrame:labelFrame];

    UITextField *textField = [[UITextField alloc]initWithFrame:textFieldFrame];
    textField.keyboardType=UIKeyboardTypeNumberPad;
    textField.delegate = self;
    textField.text = [[sectionArray objectAtIndex:[indexPath section]]objectAtIndex:[indexPath row]];


    [cell addSubview:label];
    [cell addSubview:textField];

    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}
0 голосов
/ 28 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...