gpt4 book ai didi

ios - 带有自定义 UITableViewCells 的表单

转载 作者:行者123 更新时间:2023-11-29 01:09:16 25 4
gpt4 key购买 nike

我的应用程序中有一个表单,它存在于带有自定义单元格的 UITableView 之外。这些单元格可以包含 UITextFieldUISegmentedControlUISwitch。这就是我的设置方式:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 5;
}

- (UITableViewCell *)tableView:(UITableView *)tableViewInner cellForRowAtIndexPath:(NSIndexPath *)indexPath {
DetailTableViewCell *cell;

static NSString *MyIdentifier = @"MyIdentifier";
DetailTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:MyIdentifier];

if (cell == nil)
{
cell = [[DetailTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
}

[cell setTextField:@"John Appleseed"];

// or

[cell setSegment];
[cell setSegmentIndex:1];

// or

[cell setSwitch];
[cell setSwitchEnabled:YES];

return cell;
}

现在,当用户点击“保存”按钮时,我需要获取所有这些信息并用它初始化一个模型,如下所示:

[[Restaurant alloc] initWithName:@"Name here" withNotifications:1 withFrequency:1 withDate:@"Date here" andWithDistance:@"Distance here"];

将所有这些输入转换为我模型中的数据的最佳和最简洁的方法是什么?我觉得遍历所有单元格有点过头了。

最佳答案

like looping over all the cells is a bit over the top

这不仅仅是过分的:这是完全错误的。数据并不存在于细胞中;而是存在于细胞中。它存在于数据中。模型、 View 、 Controller ;该单元格只是 View !它的工作是表示模型(数据)。因此,不应该有任何东西可以循环;您应该已经拥有数据作为数据。

Now, when a user taps the save button I need to fetch all this information

实际上,我要做的就是在用户进行更改时捕获信息。为文本字段、开关或分段控件提供一个控件操作目标,以便向您发送一条消息,告诉您发生了某些事情(例如开关值更改、文本被编辑等)并立即捕获数据.

那么唯一的问题就变成了:我收到了来自控件的消息:它位于表的哪一行?要找到答案,请从控件向上遍历层次结构,直到到达单元格,然后询问表格该单元格代表哪一行:

UIView* v = sender; // the control
do {
v = v.superview;
} while (![v isKindOfClass: [UITableViewCell class]]);
UITableViewCell* cell = (UITableViewCell*)v;
NSIndexPath* ip = [self.tableView indexPathForCell:cell];

关于ios - 带有自定义 UITableViewCells 的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35960985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com