アプリケーションに使用するカスタムデータコントローラーがあり、その中にいくつかのデリゲートメソッドを設定しています。それらはすべて機能しますが、私も必要なときに機能しません。[dataController refreshData]を呼び出すと、デリゲートメソッドrefreshDidStartとrefreshDidFinishWithoutErrorがあります。データコントローラーを割り当て、デリゲートをselfに設定し、applicationDidFinishLaunchingでrefreshDataを呼び出しますが、メソッドの実行が完了したときに、デリゲートメソッドがビューコントローラーのテーブルビューを更新しません。しかし、[dataController refreshData]を呼び出すように更新UIBarButtonItemを設定すると、refreshDidFinishデリゲートメソッドが呼び出され、想定されていることを実行します。私が使っているスプリットビューコントローラーと関係があると思います。以下はコードです:
アプリデリゲート:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
dataController = [[DataController alloc] init];
[dataController setDelegate:self];
[dataController refreshData];
}
MasterViewController:
- (void)viewDidLoad
{
[super viewDidLoad];
dataController = [[DataController alloc] init];
[dataController setDelegate:self];
self.tableView.backgroundView = nil;
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"texture3.png"]];
}
- (void)refreshDataDidStart:(DataController *)view {
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.labelText = @"Loading";
}
- (void)refreshDataDidFinishWithoutError:(DataController *)view {
[callsTableView reloadData];
[MBProgressHUD hideHUDForView:self.view animated:YES];
}
- (void)refreshDataDidFailWithError:(DataController *)view withError:(NSError *)error {
[MBProgressHUD hideHUDForView:self.view animated:YES];
NSLog(@"%@", error.localizedDescription);
}