2010-11-15 2 views
0

Это, кажется, белый слон для iPhone. Я пробовал все виды, даже петли, и я не могу заставить его работать.AlertView to Pause Код

У меня есть представление, что загружает таблицу. Однако я переехал в архивацию объектов и для целей развития, я хочу иметь начальный 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 в этом пример. И я реализовал протокол:

@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]; 
     } 



    } 
} 

Проблема мой код для создания таблицы выполняется до того, как пользователь сделал там выбор. Это вызывает всевозможные хавоки. В результате, как я могу приостановить код до тех пор, пока пользователь не сделает выбор?

ответ

2

Если вы используете UITableView, вы не сможете «приостановить» код, однако это не будет способом выбора в любом случае. Возможным решением было бы загрузить пустую таблицу (return 0 в (UITableView *)tableView:numberOfRowsInSection) до тех пор, пока пользователь не выбрал что-то, а затем загрузите данные в Tableview с [tableView reloadData];

+0

Отлично. Его всегда простое решение :) – Colin

0

В таблице tableView: numberOfRowsInSection: просто возвращайте ноль, пока пользователь не примет решение.

0

Добавить [self.tableView reloadData]; в конце метода делегата actionSheet. Это вызовет все методы UITableViewDataSource снова

Смежные вопросы