从UITextfield上的UIView读取值,该值被添加为Contentview UITableviewCell

时间:2016-05-26 18:10:01

标签: ios objective-c uitableview

我需要显示类似Employee的可编辑字段。

EmpName EmpTitle EmpDOB EmpHobby

假设20名员工。假设所有字段都是可编辑的。

我创建了UIView并为EmpName ETC添加了所有UITextField

我将UIView添加到cell.contentView

[cell.contentView addSubview:[self displayEmpView]];

这给了我完美的设计,展示了20名员工的重复设计。

现在我的问题是如何访问UITextField值。 UITextField位于UIView,已添加为内容视图。我需要保存更改值。

这可能吗?还是有更好的方法。

2 个答案:

答案 0 :(得分:0)

您需要为UITextField实现委托方法,这些方法将响应所有文本事件。让您的课程符合UITextFieldDelegate

您可以浏览cell.contentView中的所有子视图,找到属实UITextField的子视图,然后设置yourTextfield.delegate=self;

保存所有行的数据:

-(IBAction)save{

   for(int i=0;i<rowCont;i++){
    UITableViewCell *cell = [mytableview cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
      for(UITextField *txtField in cell.contentView.subviews){
     NSString *text = [txtField text];
        //save the value of text
     }
   }

这可能是一种丑陋的方式,但为了使事情更简单,更清晰,您可以维护一个字典,并在每次完成将值输入文本字段时将textField值附加到字典中。 因此当你移动到另一个textField时,会调用委托方法textFieldDidEndEditing,所以你可以这样做

-(void) textFieldDidEndEditing: (UITextField * ) textField
{
    //Store the textField.text in the dictionary here
}

所以最后你会得到一个包含所有20个值的字典,你只需点击按钮就可以保存这个字典到你想要的地方。

答案 1 :(得分:0)

你可以通过

来完成
[cell.contentView addSubview:[self displayEmpView]];
displayEmView.tg = indexPath.row+1000;
UITextFiele1.tag = indexPath.row+1001;

依旧......

当你需要使用时:

UIView * displayEmpView = [cell viewWithTag:indexPath.row+1000];
UITexField *txtFieldABC = [displayEmpView viewWithTag:indexPath.row+1001];

但我不想使用它,让我们创建自定义UITableViewCell并为所有UI组件创建一个outLet。