对于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。并且我已经实现了这个协议:
@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];
}
}
}问题是我构建表的代码在用户做出选择之前就执行了。这导致了各种各样的混乱。因此,我如何暂停代码,直到用户做出选择?
发布于 2010-11-15 21:04:07
如果您使用的是UITableView,您将无法“暂停”代码,但无论如何这都不是可选的方法。一种可能的解决方案是加载一个空表( (UITableView *)tableView:numberOfRowsInSection)中的return 0,直到用户选择了某些内容,然后使用[tableView reloadData];重新加载tableView的数据
发布于 2010-11-15 21:01:17
在您的tableView:numberOfRowsInSection中:在用户做出决定之前返回0。
发布于 2010-11-15 21:18:46
在actionSheet委托方法的末尾添加[self.tableView reloadData];。这将再次触发所有UITableViewDataSource方法。
https://stackoverflow.com/questions/4184482
复制相似问题