开发者

Values over UITextField placed over UITableViewCell are getting lost

I have place开发者_开发技巧d UITextField over each UITableView cell. While scrolling the UITableView cell the text over the UITextField is getting lost. What can I do to prevent this?


You need to get track of an NSMutableArray which stores the text field values. Make the initial values @"". When you insert the text field into the cell, get the value from the appropriate value in the array.

If the text field exits, do something like this to store your text field values in the array:

    -(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;
}


It's because as you scroll, the tableview dynamically creates and destroys cells to save on memory. If you still haven't figured out a way to solve this problem let me know and I will help you find a solution

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜