1

我有一个应用程序,我正在使用 nsmutablearray 来控制一个表格视图,我是这样以编程方式创建的。`

tableview = [[UITableView alloc] init];
    [tableview setFrame:CGRectMake(self.view.frame.origin.x,44,self.view.frame.size.width, self.view.frame.size.height)];
    tableview.dataSource = self;
    tableview.delegate = self;

    [self.view addSubview:tableview];
     self.tableview.rowHeight = 55;


    [tableview release];

.then i have an nsmutable array which is an instance array.when it is first loading everything seems to be working fine.i am storing that mutable array to the nsuserdefaults.from the second time onwords i am trying to load the data from the nsuserdefaults array like this.

NSUserDefaults *userslist = [NSUserDefaults standardUserDefaults];
        NSArray *arrayObj = [userslist objectForKey:@"userslist"]; 

        NSMutableArray *searchfriendarray1=[NSMutableArray arrayWithArray:arrayObj];
        searchfriendarray=searchfriendarray1;

.thats 也工作。但在一个方法中,我试图编辑该数组,然后尝试重新加载表,重新加载表没有被调用。`

[sortedFriendsArray removeAllObjects];
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"userslist"];
   [[NSUserDefaults standardUserDefaults]synchronize ];
   NSDictionary *dictionary = [self.searchfriendarray objectAtIndex:index];
     [dictionary setValue:@"offline" forKey:@"TYPE"];  

    NSUserDefaults *userslist = [NSUserDefaults standardUserDefaults];

    [userslist setObject:searchfriendarray forKey:@"userslist"];

`在此之后从我的数组创建排序数组。但是当我调用 [self.tableview reloadData]; 它没有重新加载。有谁能够帮助我?

4

2 回答 2

1

没有更新您的表格视图的两个可能原因是

  • 您的 dataSource 数组未正确更新,因此请在调用 reloadData 时检查数组的大小/内容

  • 如果您的数据源已正确更新,则可能您不是在 mainThread 上调用 reloadData。

    [tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

于 2013-02-10T09:16:29.597 回答
0

这里有几点:

  • 在头文件 (.h) 中声明表视图
  • viewDidLoad 方法中的 Alloc-Init 表视图
  • 在 dealloc 方法中释放表视图

并为您的数据源数组更新做同样的事情,一旦数组得到更新调用表视图重新加载数据方法:

[tableview reloadData];

注意:数据源数组 = numberOfRows 和 cellForRowAtIndexPath 方法中使用的数组。该数组需要在调用 reload data 方法之前更新。

希望这可以帮助你

于 2013-02-10T08:04:04.137 回答