Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 加载数据后立即显示tableView popover_Ios_Ipad_Uitableview_Delegates_Uipopovercontroller - Fatal编程技术网

Ios 加载数据后立即显示tableView popover

Ios 加载数据后立即显示tableView popover,ios,ipad,uitableview,delegates,uipopovercontroller,Ios,Ipad,Uitableview,Delegates,Uipopovercontroller,当应用程序加载时,我想从一开始就用表格视图显示我的Popover。问题是tableView当时没有任何内容。我正在使用这种方法: UIBarButtonItem *barItem = [self.toolbar.items objectAtIndex:0]; [self.popoverController presentPopoverFromBarButtonItem:barItem permittedArrowDirections:UIPopoverArrowDirectionUp anim

当应用程序加载时,我想从一开始就用表格视图显示我的Popover。问题是tableView当时没有任何内容。我正在使用这种方法:

 UIBarButtonItem *barItem = [self.toolbar.items objectAtIndex:0];
[self.popoverController presentPopoverFromBarButtonItem:barItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
现在,我的想法是让一个委托方法在tableView完成数据提取时触发,但不幸的是什么也没有发生:

RootViewController.h

@protocol RootDelegate <NSObject>
@optional
 -(void)didFinishLoading;
@end
DetailViewController.m
(符合协议)


表视图方法是线程化的,因此在viewDidLoad末尾的调用将在不可预测的时间发生,显然是在表填充之前。我看不到任何引用事件“table is filled”的委托方法,因此我的最佳猜测是保留代码并延迟其执行:

[[self delegate] performSelector:@selector(didFinishLoading) withObject:nil afterDelay:1]
假设1秒钟就足够填写表格了


您可以探索的另一个选项是,当您认为表已获得足够的数据时,在CellForRowatineXpath中启动它,但这要复杂一些。

您需要将Popor放置在ViewDidDisplay中:

- (void)viewDidAppear {
    UIBarButtonItem *barItem = [self.toolbar.items objectAtIndex:0];
    [self.popoverController presentPopoverFromBarButtonItem:barItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}

在UITableView完成对其数据源和tableview委托方法的调用后,
ViewDidAspect
将被调用。

您的答案是正确的。不知道为什么gregory的解决方案被标记为正确。
[[self delegate] performSelector:@selector(didFinishLoading) withObject:nil afterDelay:1]
- (void)viewDidAppear {
    UIBarButtonItem *barItem = [self.toolbar.items objectAtIndex:0];
    [self.popoverController presentPopoverFromBarButtonItem:barItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}