gpt4 book ai didi

ios - viewDidLoad 在 applicationDidFinishLaunching 之前调用

转载 作者:行者123 更新时间:2023-11-29 12:53:58 25 4
gpt4 key购买 nike

我有一个我自己无法解决的问题。在用户可以看到 View(UITableViewController) 之前,我必须从我的 Web 服务器下载数据,所以在 UITableView 应该可见的时候,它应该有内容以显示。问题是,我开始在 applicationDidFinishLaunching 中下载数据,我在 viewDidLoadapplicationDidFinishLaunching 中有 NSLogs,有趣的是 viewDidLoadNSLogsapplicationDidFinishLaunchingNSLogs 之前被调用(那些 NSLogs 在所有数据下载完成后立即写入)。

一旦我完成数据下载,我有一个 NSMutableArray,我从 AppDelegate 传递给 TableViewController,但是 tableViewController 看起来完全是空的,因为在下载所有数据之前调用了 ViewDidLoad

然后我有 1 个问题:在加载 TableView 之前我应该​​在哪里下载所有数据?

我一直在考虑的解决方案:我考虑创建另一个带有 UIImageViewViewController(它将是主视图)具有图像“正在加载...”的图像:我在那里下载了我需要的所有数据,并将所有数据存储到 NSMutableArray 中。下载数据后,我调用 UITableViewController 并将 NSMutableArray 传递给 UITableViewController。我相信这个解决方案会奏效,但它必须是解决这个问题的更简单的方法。

最佳答案

一个好的解决方案是创建一个委托(delegate)方法,在下载完成时通知您的 ViewController。在该方法的实现上,您调用 [yourTableView reloadData]。

在类里面,您将下载数据(在 YourDownloadClass.h 上):

@protocol WebServiceConsumerDelegate 

//@required
-(void) requestDidFinishSuccessfully:(NSArray*) resultArray;

@end

@interface YourDownloadClass : UIViewController

@property (strong, nonatomic) id <WebServiceConsumerDelegate> delegate;

在您下载数据之后,在 YourDownloadClass.h 上:

[self.delegate requestDidFinishSuccessfully:resultArray];

现在,转到您的 TableViewClass.h

#import "YourDownloadClass.h"

@interface TableViewClass : UITableViewController <WebServiceConsumerDelegate>

最后,在 TableViewClass.m 上:

-(void)viewDidLoad{
[super viewDidLoad];

YourDownloadClass* delegateClass = [YourDownloadClass alloc] init];

// Or if you are downloading on AppDelegate:
AppDelegate* delegateClass = [UIapplication sharedApplication];

delegateClass.delegate = self;

}

最后实现方法:

-(void)requestDidFinishSuccessfully:(NSArray*) resultArray{

//Get the objects of resultArray to use on your table view

[yourTableView reloadData];

}

希望对你有所帮助。 :)

关于ios - viewDidLoad 在 applicationDidFinishLaunching 之前调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21633573/

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