delegate
とを に設定しdatasource
ました。File's Owner
コンセントはxib
ファイルで適切に設定されています。ファイルの場合.h
:
@interface ProductsViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>{
IBOutlet UITableView *objTableView;
}
@property(nonatomic,strong)IBOutlet UITableView *objTableView;
.m
ファイル内:
NSLog(@"%@",self.objTableView);
[self.objTableView reloadData];
初めて、self.objTableView
適切に設定されて
いますNSLog(@"%@",self.objTableView);
:
<UITableView: 0x1d9a5800; frame = (4 54; 532 660); clipsToBounds = YES; autoresize = W+H;
しかし、次回は(null)
テーブルビューオブジェクトを取得したため、reloadData
テーブルビューが更新されません。それを修正する方法、事前に感謝します。
編集:
私は次のようなAfnetworking
方法を使用してJSONRequestOperationWithRequest
います:
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON){
[SVProgressHUD dismiss];
//Get the response from the server
//And then refresh the tableview
[self.objTableView reloadData];//I shouldn't put this here, it should be in the main thread
}failure:^(NSURLRequest *request, NSHTTPURLResponse *response,NSError *error, id JSON){
[SVProgressHUD dismiss];
//Alert the error message
}];
[operation start];
[SVProgressHUD showWithStatus:@"Searching for products, please wait.."];
実際にJSONRequestOperationWithRequest
はメインスレッドではなく非同期で実行しますが、UI
更新はメインスレッドで行う必要があるため、[self.objTableView reloadData];
そのメソッドの外で削除する必要があります。しかしここで?終了後にメインスレッドで確実に実行するにはどうすればJSONRequestOperationWithRequest
よいですか?