我想在应用加载时从一开始就显示一个带有 TableView 的 Popover。问题是 tableView 没有任何内容。我正在使用该方法:
UIBarButtonItem *barItem = [self.toolbar.items objectAtIndex:0];
[self.popoverController presentPopoverFromBarButtonItem:barItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
现在,我的想法是有一个委托(delegate)方法,当 tableView 完成获取数据时触发该方法,但不幸的是没有任何反应:
RootViewController.h :
@protocol RootDelegate <NSObject>
@optional
-(void)didFinishLoading;
@end
RootViewController.m :
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];
self.clearsSelectionOnViewWillAppear = NO;
[self setTitle"Zielscheiben"];
[[NSNotificationCenter defaultCenter] addObserver:self selectorselector(dataSaved name"DataSaved" object:nil];
[[self delegate] didFinishLoading];
}
DetailViewController.m (符合协议(protocol))
- (void)didFinishLoading
{
UIBarButtonItem *barItem = [self.toolbar.items objectAtIndex:0];
[self.popoverController presentPopoverFromBarButtonItem:barItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
Best Answer-推荐答案 strong>
表格 View 方法是线程化的,因此您在 viewDidLoad 结束时的调用将发生在不可预知的时间,显然是在表格被填满之前。我看不到任何引用事件“表已填充”的委托(delegate)方法,所以我最好的猜测是保留您的代码并延迟其执行:
[[self delegate] performSelectorselector(didFinishLoading) withObject:nil afterDelay:1]
假设 1 秒足以填满表格。
您可以探索的另一个选项是当您认为表格有足够的数据时在 cellForRowAtIndexPath 中的某个时间触发它,但这在某种程度上更复杂。
关于ios - 加载数据后立即显示 tableView 弹出窗口,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/7750253/
|