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;

それも機能していますが、メソッドでその配列を編集しようとしていて、テーブルをリロードしようとしていますが、リロードテーブルが呼び出されません。

[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

テーブルビューが更新されない理由として考えられるのは、次の 2 つです。

  • dataSource 配列が正しく更新されていないため、 reloadData を呼び出すときに配列のサイズ/内容を確認してください

  • dataSource が正しく更新されている場合は、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 メソッドで使用された配列。データのリロード メソッドを呼び出す前に、この配列を更新する必要があります。

これがお役に立てば幸いです

于 2013-02-10T08:04:04.137 に答える