TableView无法获取向上或向下滚动的DATA

时间:2016-05-06 11:00:56

标签: objective-c uitableview xcode7

当我试图从单元格中获取数据时,它返回空值,但是我发现我无法从单元格中读取数据是向上/向下抛出TableView

这是图像清除我的情况 enter image description here

以下是用于保存数据的代码

  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];

2 个答案:

答案 0 :(得分:0)

据我了解你,你应该将你的数据保存在其他地方(你可能有一个数据模型正确吗?)然后适合模型集(在cellForRowAtIndexPathUITableView。无需直接从UITableView设置或获取数据。请阅读官方文档here

Here是关于Table View的好教训。祝你好运。

答案 1 :(得分:0)

UITableview正在重复使用这些单元格。因此,您无法获取for循环中的值。这将返回nil。

更好的方法是使用数据模型来存储值。

例如:创建数据模型。添加一些属性。并且具有这些属性的称重传感器现在只需要更新模型对象属性。

将这些模型对象存储在数组中。

最后,您可以随时准备好数据。