Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如果UITableViewCell为';它不可见_Iphone_Objective C_Ios_Uitableview - Fatal编程技术网

Iphone 如果UITableViewCell为';它不可见

Iphone 如果UITableViewCell为';它不可见,iphone,objective-c,ios,uitableview,Iphone,Objective C,Ios,Uitableview,在我的应用程序中,我正在使用。其想法是使用用户输入的数据进行一些计算。但问题是。我有大约14个电池,当然,它们不能全部放在屏幕上。因此,当我单击OK时,应用程序正在检查是否填写了所有字段: BOOL complete = YES; for (int i = 0; i < [cellTextArray count] - [self.numberOfBools intValue]; i++) { NSIndexPath *iPath = [NSIndexPath indexPathFo

在我的应用程序中,我正在使用。其想法是使用用户输入的数据进行一些计算。但问题是。我有大约14个电池,当然,它们不能全部放在屏幕上。因此,当我单击
OK
时,应用程序正在检查是否填写了所有字段:

BOOL complete = YES;
for (int i = 0; i < [cellTextArray count] - [self.numberOfBools intValue]; i++) {
    NSIndexPath *iPath = [NSIndexPath indexPathForRow:i inSection:0];
    ELCTextfieldCell *theCell = (ELCTextfieldCell *)[self.tableView cellForRowAtIndexPath:iPath];
    if (!theCell.rightTextField.text)
        complete = NO;
}
有人能把我推到正确的方向吗?:)

感谢您的帮助

编辑


self.numberOfBools
只是一个
NSNumber
,其中包含这些行中的bools总数。它们使用的是
ui开关
,而不是
UITextField
,因此我将它们排除在检查之外。

这是出于设计。
UITableView
中的单元格是可重用的,可以在不可见时释放它们以节省资源。您必须将数据存储在单元格以外的其他位置。

需要根据支持单元格的数据而不是单元格本身来计算Complete。让我解释一下

单元格是数据的可视化表示,当它不在视图中时,运行时将释放它,这就是它为零的原因

但是cellForRowAtIndexPath:从数据创建单元格,对吗?(或者这样做是正常的)因此,当用户更新cell.rightextfield时,您应该更新数据。rightextfield和complete应该类似于。。。这是不可编译的伪代码

complete = YES;
for (Data* data in myDataSet) {
    if (!data.rightTextField)
        complete = NO;
}

因此,概括地说,单元格表示数据,它们不能保证持久存在。您自己可以确保数据持久化;因此,测试数据的完整性,而不是细胞。

我同意Damo和反气旋的观点。你应该已经更新了

theCell.rightTextField.text
首先进入表的数据源

然后,您可以根据数据源进行计算。 将
textFieldArray
作为表的数据源

NSMutableArray*textFieldArray

myTableView.dataSource=textFieldArray

然后需要在更新textfield时更新数据源。
最后,您可以处理数据源。

这只是一个NSNumber。有一些布尔值,我刚刚为它们添加了一个
UISwitch
,因此这些单元格(文本字段)中没有文本
theCell.rightTextField.text