来自UITableViewCell中的文本字段的值 - iOS ObjC

问题描述:

我在uitableview中遇到了一个小问题。来自UITableViewCell中的文本字段的值 - iOS ObjC

我创建一个单元格属性,我想抓住从他们的价值观和发送到我的web服务:

@property (weak, nonatomic) IBOutlet UILabel *profileValueLabel; 
@property (weak, nonatomic) IBOutlet UITextField *profileTextfield; 

profileValueLabel只是文字,它是确定,但我需要profileTextField值和发送我的服务。

任何帮助?

+0

你什么时候需要这些数据?你是否期望用户在UITextField中输入文本,并在写完后发送它? – marosoaie 2015-04-06 13:27:22

+0

是的,他们打开tableview作为配置文件编辑和填充textfields,然后他们会回来,数据将通过服务发送,但我不知道现在怎么发送到 – Peter 2015-04-06 20:27:51

您的profileTextfield属性需要位于您的UITableViewCell子类的头文件中。然后,在您的UITableViewDataSource控制器中,一旦确定了要获取其文本字段文本的单元的索引路径,就可以使用[myTableView cellForRowAtIndexPath:yourCellsIndexPath].profileTextfield.text

如果您希望在用户输入数据后立即获取profileTextfield属性,则需要在UITableViewCell子类和相应的委托属性中创建一个协议。然后,您制定一个协议方法,如-(void)tableViewCell:(myUITableViewCellSubclass *)cell didEndEditingProfileTextFieldWithText:(NSString *)text;然后在您的UITableViewCell子类中,将profileTextField的委托设置为您的UITableViewCell子类,并使用textFieldDidEndEditing:textFieldWillReturn:委托方法。无论您使用哪种方法,请拨打[self.delegate tableViewCell:self didEndEditingProfileTextFieldWithText:self.profileTextfield.text]协议方法。你的tableViewController应该处理这个方法,你可以做任何你需要的。

最好的办法是让您的UITableViewCell子类符合UITextFieldDelegate,然后为您的表视图单元格子类创建一个协议(委托),当调用UITextField didEndEditing方法时触发并传递表视图单元格本身可能还有要发送到Web服务的文本数据)放入委托方法中,以便在您的视图控制器中,您可以根据表格中的单元格确定索引路径。然后,在您的视图控制器中,只要委托方法被触发,就可以将每个单元格上的数据发送到Web服务。这可能是最干净的方法,但最好将此逻辑封装在表视图类本身中,以便保持视图控制器更薄,并使两个组件之间的通信更加明确。

我希望你已经实现了UITableView的代表,onE方法 NSString * tempString1; 的NSString * tempString2 - (空)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath方法:(NSIndexPath *)indexPath {

UITableViewCell *cell1 = [tableView cellForRowAtIndexPath:indexPath]; 
tempString1= cell1.textLabel.text; //<-- your label 

*tempString2= cell1.textfeild.text ; // u can access the value , 

} 问题的第二部分//
您需要嵌入tempString和tempString2变量,服务请求。

+0

和indexPath?它不是我整型像数组...我需要例如第三个文本域。 – Peter 2015-04-07 18:00:18

+0

我不确定你想说什么在这里,我看到如果你想要做以上操作行号第三 你可以把像if(indexpath.row == 2){ //以上代码 } 或者如果你想为anyrow 的第三个文本框做这个,那么你可以使用上面的代码,只需要改变textlabel/textfeild的名字就可以了 – 2015-04-08 07:28:17