当我试图从单元格中获取数据时,它返回空值,但是我发现我无法从单元格中读取数据是向上/向下抛出TableView
以下是用于保存数据的代码
NSMutableArray *arrTmp = [[NSMutableArray alloc] init];
for(int i = 0; i<[tblView numberOfRowsInSection:0]; i++){
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
FUCellView *cell = [tblView cellForRowAtIndexPath:indexPath];
UITextField *tfNo = (UITextField *)[cell viewWithTag:i + 100];
UIButton *btnTime = (UIButton *)[cell viewWithTag:i + 200];
UITextField *tfVisit = (UITextField *)[cell viewWithTag:i + 300];
UIButton *btnProvider = (UIButton *)[cell viewWithTag:i + 400];
NSMutableDictionary *theDictionary = [[NSMutableDictionary alloc] init];
if([tfNo.text length] > 0 && tfNo.text != nil){
NSString* str = [tfNo.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
[theDictionary setObject:str forKey:@"number"];
}
else{
[theDictionary setObject:@"" forKey:@"number"];
}
if([btnTime.titleLabel.text length] > 0 && btnTime.titleLabel.text != nil){
NSString* str = [btnTime.titleLabel.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
[theDictionary setObject:str forKey:@"time"];
}
else{
[theDictionary setObject:@"" forKey:@"time"];
}
if([tfVisit.text length] > 0 && tfVisit.text != nil){
NSString* str = [tfVisit.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
[theDictionary setObject:str forKey:@"visit_type"];
}
else{
[theDictionary setObject:@"" forKey:@"visit_type"];
}
if([btnProvider.titleLabel.text length] > 0 && btnProvider.titleLabel.text != nil){
NSString* str = [btnProvider.titleLabel.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
[theDictionary setObject:str forKey:@"provider"];
}
else{
[theDictionary setObject:@"" forKey:@"provider"];
NSLog(@"ProviderELse");
}
[arrTmp addObject:theDictionary];
答案 0 :(得分:0)
据我了解你,你应该将你的数据保存在其他地方(你可能有一个数据模型正确吗?)然后适合模型集(在cellForRowAtIndexPath
)UITableView
。无需直接从UITableView
设置或获取数据。请阅读官方文档here
Here是关于Table View的好教训。祝你好运。
答案 1 :(得分:0)
UITableview正在重复使用这些单元格。因此,您无法获取for循环中的值。这将返回nil。
更好的方法是使用数据模型来存储值。
例如:创建数据模型。添加一些属性。并且具有这些属性的称重传感器现在只需要更新模型对象属性。
将这些模型对象存储在数组中。
最后,您可以随时准备好数据。