2010-11-15 80 views
0

這似乎是iPhone的白色大象。我嘗試了各種各樣,甚至循環,我無法使它工作。AlertView暫停代碼

我有一個視圖,加載一個表。不過我已經搬進對象歸檔和發展目的,我想有要求,如果用戶想要使用保存的數據庫或下載

(void)showDBAlert { 

    UIActionSheet *alertDialogOpen; 
    alertDialogOpen = [[UIActionSheet alloc] initWithTitle:@"DownloadDB?" 
        delegate:self 
        cancelButtonTitle:@"Use Saved" 
        destructiveButtonTitle:@"Download DB" 
             otherButtonTitles:nil]; 
    [alertDialogOpen showInView:self.view]; 
} 

我使用這個的ActionSheet新副本初始AlertView實例。我已經實現了協議:

@interface ClubTableViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource, UIActionSheetDelegate> 

在此基礎上運行此檢查按下哪個按鈕:

(void)actionSheet:(UIActionSheet *) actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 


    NSString *buttonTitle=[actionSheet buttonTitleAtIndex:buttonIndex]; 

    if ([buttonTitle isEqualToString:@"Download DB"]) { 

     [self loadDataFromDB]; 

    } 

    if ([buttonTitle isEqualToString:@"Use Saved"]) { 

     self.rows = [NSKeyedUnarchiver unarchiveObjectWithFile:[self archivePath]]; 

     if (self.rows == nil) { 
      [self loadDataFromDB]; 
     } 



    } 
} 

問題是我的代碼來構建表執行用戶做出了那裏之前選擇。這導致各種各樣的havok。因此,如何才能暫停代碼,直到用戶做出選擇?

回答

2

如果你使用的是UITableView,你將無法「暫停」代碼,但是這不是選擇的方法。一種可能的解決辦法是,直到用戶已經選擇的東西加載(UITableView *)tableView:numberOfRowsInSection)一個空表(return 0,然後用[tableView reloadData];

+0

完美。它總是一個簡單的解決方案:) – Colin 2010-11-17 09:26:21

0

在你的tableView:numberOfRowsInSection:直到用戶做出決定時才返回零。

0

重裝的tableView的數據在actionSheet委託方法的末尾添加[self.tableView reloadData];,這將再次觸發所有UITableViewDataSource方法。