0

到目前为止,已经阅读了一些帖子,例如thisthis,但它们对我的情况并没有真正的帮助。

我正在使用“普通”样式的 UITableViews 为 iPad 创建一个动态表单。我在页面上有多个不同的 UITableView,因此我将一个单独的对象定义为服务器作为我的数据源和委托。我了解如何使用数据源更改每个单元格的文本;但是,我不知道如何将原型单元格中的 UITextFields 链接到 IBAction。我可以弄清楚如何为表中的所有文本字段创建一个 IBAction,以便它们都更新相同的数据,但我不知道如何让每个 UITextField 与我的数据源一一对应。

这是我的原型单元:

我的原型细胞

到目前为止我的代码:

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myPrototypeCell"];

    UILabel *buildingNumber = (UILabel *)[cell viewWithTag:100];        
    buildingNumber.text = [@"Building " stringByAppendingString:self.dataSource[indexPath.row][@"buildingNumber"]];

    return cell;
}

self.dataSource是 NSMutableDictionaries 的 NSMutableArray。任何帮助表示赞赏。

4

3 回答 3

1

我最初以为您指的是 IBOutlets,所以我之前的回答在某种程度上是错误的,但内在的想法仍然是一样的。

除非该单元是子类,否则您不能从原型单元获得 IBActions 或 IBOutlets。如果单元格是静态的,您可以这样做,但这对您的情况没有帮助。子类化 UITableViewCell 并不太难或太糟糕,事实上,如果将来您想加快 TableView 的速度,那是许多开始的方法之一。

于 2013-08-27T19:26:11.913 回答
0

您的所有 textField 都需要单个。所以请执行以下操作:

获取标签时获取文本字段

UITextField *yourTextField = (UITextField *)[cell viewWithTag:101]; 
[yourTextField addTarget:self action:@selector(clickTextField:) forControlEvents:UIControlEventEditingChanged];

clickTextField 方法将为每个文本字段调用。

希望这可以帮助。

编辑:忘了提,你可以设置 UItextField 的委托并在 UITextFieldTextDidChange 中获得通知:委托方法

于 2013-08-27T23:22:51.190 回答
0

本教程提供了一些不同的选项来处理表格视图单元格内的信息:

http://mobile.tutsplus.com/tutorials/iphone/customizing-uitableview-cell/

我几乎总是使用UITableViewCell子类来处理单元内的出口和动作。但这应该是您根据自己的架构做出的决定。

希望这可以帮助!

于 2013-08-27T19:41:08.360 回答