我有一個UITableView與導航控制器。表格視圖由自定義單元格組成,每個單元格包含從服務器下載的數據,顯然這種下載非常耗時,因此我希望在發生這種情況時顯示某種HUD。UITableView加載數據並顯示HUD的問題
我的問題是,當我按下按鈕轉換到表格視圖時,我按下的按鈕卡在「高亮」狀態,直到所有的數據被下載,然後視圖從前一個轉換到以其所有的榮耀展示餐桌風景。但是,我寧願轉移到空表視圖,然後在填充表時顯示加載HUD。 (或類似的東西,什麼可以炫耀的程序實際上是做一些事情,並沒有崩潰的用戶。)
下面是我的一些代碼:
- (void) displayView:(int)intNewView{
NSLog(@"%i", intNewView);
[currentView.view removeFromSuperview];
[currentView release];
switch (intNewView) {
case 1:
currentView = [[View1 alloc] init];
break;
case 2:
currentView = [[View2 alloc] init];
break;
case 3:
currentView = [[View3 alloc] init];
break;
case 4:
currentView = [[View4 alloc] init];
break;
case 5:
vc = [[TableViewController alloc] init];
currentView = [[UINavigationController alloc] initWithRootViewController:vc];
[currentView setTitle:@"Events"];
break;
}
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
[self.view addSubview:currentView.view];
[UIView commitAnimations];
}
- (void)viewDidLoad {
[super viewDidLoad];
//Initialisation code..
[SVProgressHUD showInView:self.view status:@"Doing Stuff"];
[self viewDidAppear:YES];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"ViewDidAppear");
if ([stories count] == 0) {
NSString * path = @"http://myURL.com";
[self parseXMLFileAtURL:path];
}
}
我明白爲什麼視圖不過渡並顯示HUD前viewDidAppear被調用,只是沒有如何解決這個問題?大部分工作開始於viewDidAppear。
任何幫助將不勝感激,
傑克
我明白你的意思,但是當我試圖將表視圖加載HUD,數據將開始從服務器加載,然後當它加載它只是沒有顯示在表中,但平視顯示器去除了它自己,因爲它應該..任何想法我可能做錯了嗎? – 2011-06-07 13:46:21
您是否將數據加載到表的數據源中,然後在線程結束時調用'[self.tableView reloadData]'(或類似的)方法? – marzapower 2011-06-07 13:48:48
我的天,我正在重新加載錯誤的tableView。菜鳥的錯誤,非常感謝@marzapower。 – 2011-06-07 14:06:56