gpt4 book ai didi

ios - 加载数据后立即显示 tableView 弹出窗口

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:51:26 24 4
gpt4 key购买 nike

我想在应用程序加载时从一开始就显示一个带有 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 selector:@selector(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];

}

最佳答案

TableView 方法是线程化的,因此您在 viewDidLoad 末尾的调用将在不可预测的时间发生,显然是在表被填满之前。我看不到任何引用事件“表已填充”的委托(delegate)方法,所以我最好的猜测是保留您的代码并延迟其执行:

[[self delegate] performSelector:@selector(didFinishLoading) withObject:nil afterDelay:1]

假设 1 秒足以填满表格。

您可以探索的另一个选择是当您认为表有足够的数据时在 cellForRowAtIndexPath 中的某个时候触发它,但这在某种程度上更复杂。

关于ios - 加载数据后立即显示 tableView 弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7750253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com