gpt4 book ai didi

iOS 委托(delegate)方法在需要时没有被调用

转载 作者:行者123 更新时间:2023-11-29 04:10:09 27 4
gpt4 key购买 nike

我有一个用于我的应用程序的自定义数据 Controller ,在其中我设置了一些委托(delegate)方法。它们都有效,但当我也需要它们时却不起作用。当我调用 [dataController刷新Data] 时,我有一个委托(delegate)方法refreshDidStart和refreshDidFinishWithoutError。我分配数据 Controller ,将委托(delegate)设置为 self 并在 applicationDidFinishLaunching 中调用刷新数据,但是当该方法执行完成时,委托(delegate)方法不会刷新 View Controller 中的 TableView 。但是,当我设置刷新 UIBarButtonItem 来调用 [dataController refreshData] 时,会调用refreshDidFinish 委托(delegate)方法并执行预期的操作。我相信这与我正在使用的分割 View Controller 有关。下面是代码:

应用委托(delegate):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

dataController = [[DataController alloc] init];
[dataController setDelegate:self];
[dataController refreshData];

}

主视图 Controller :

- (void)viewDidLoad
{
[super viewDidLoad];

dataController = [[DataController alloc] init];
[dataController setDelegate:self];

self.tableView.backgroundView = nil;
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"texture3.png"]];
}

- (void)refreshDataDidStart:(DataController *)view {

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.labelText = @"Loading";
}

- (void)refreshDataDidFinishWithoutError:(DataController *)view {

[callsTableView reloadData];
[MBProgressHUD hideHUDForView:self.view animated:YES];
}

- (void)refreshDataDidFailWithError:(DataController *)view withError:(NSError *)error {

[MBProgressHUD hideHUDForView:self.view animated:YES];

NSLog(@"%@", error.localizedDescription);
}

最佳答案

在您的应用程序委托(delegate)中,您将 DataController 的委托(delegate)设置为应用程序委托(delegate)。因此,被调用的委托(delegate)方法需要位于您的 App Delegate 类代码中。

在 MasterViewController 中,您将 DataController 的委托(delegate)设置为 MasterViewController,因此在 MasterViewController 类中调用 DataController 的委托(delegate)方法。

您需要将 DataController 委托(delegate)方法添加到您的 App 委托(delegate)代码中,以触发刷新 TableView ,也许可以使用 NSNotificationCenter。或者也许最好让应用程序委托(delegate)告诉 MasterViewController 在其 DataController 上调用刷新数据。

关于iOS 委托(delegate)方法在需要时没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14542337/

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