UITableView中的TextField

时间:2009-12-03 13:10:16

标签: iphone cocoa-touch

我是iphone的新手...尝试这段代码但得到一些错误可以帮助我..

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
........//// some code ...........//////////
        CGRect frame = CGRectMake(5 ,10 , 320, 44);
    UITextField *txtField = [[UITextField alloc]initWithFrame:frame];
    [txtField setBorderStyle:UITextBorderStyleNone];
    txtField.delegate=self;
    switch (indexPath.row) {
        case 0:
            txtField.placeholder=editFrndBDb.frndName;
            txtField.text=editFrndBDb.frndName;
            txtField.tag=1;
            break;
        case 1:
            txtField.placeholder=editFrndBDb.bDay;
            txtField.text=editFrndBDb.bDay;
            txtField.tag=2;
            break;
        case 2:
            txtField.placeholder=editFrndBDb.frndNote;
            txtField.text=editFrndBDb.frndNote;
            txtField.tag=3;
            break;
        default:
            break;
    }
    [cell.contentView addSubview:txtField];
    [txtField release];
    cell.selectionStyle=UITableViewCellSelectionStyleNone;
    return cell;    
}

-(IBAction ) saveChanges:(id) sender
{

    UITextField *name =(UITextField *)[self.viewWithTag:1];
    UITextField *bday= (UITextField *)[self.viewWithTag:2];

    UITextField *note=(UITextField *)[self.viewWithTag:3];
    ////  some code //////////// 

我使用此代码在tableview中显示文本字段,然后从文本字段中访问该值。但是在“saveChange”方法中获取错误“UITextField * name =(UITextField *)[self.viewWithTag:1]”错误: - 视图不是结构或联合。   请告诉我这个

3 个答案:

答案 0 :(得分:2)

您的文本字段不是ViewController类视图的子视图(您在其中引用“self”)。它位于特定UITAbleViewCell内。因此,您必须确定要从哪个表格单元格中获取textview内容,并将其从单元格的内容视图中删除。

此外,您可以在将来省去一些麻烦,并在检查时检查您是否获得了一个视图,例如:

UIView *aView = [someView viewWithTag:1];
if( aView != nil ){
...
}else{
...
}

答案 1 :(得分:2)

不知道问题或代码中是否是拼写错误:

[self.viewWithTag:1]

但你不应该在那里有一个点:

[self viewWithTag:1]

答案 2 :(得分:1)

您的保存方法代码应为:

-(IBAction ) saveChanges:(id) sender
{

    UITextField *name =(UITextField *)[self.view viewWithTag:1];
    UITextField *bday= (UITextField *)[self.view viewWithTag:2];

    UITextField *note=(UITextField *)[self.view viewWithTag:3];
    ////  some code ////////////
}

您正在访问与放置此代码的控制器相关的视图的标记子视图。