gpt4 book ai didi

ios - DetailViewController 仅在第二次加载网页

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

好的,所以我有一个主详细信息应用程序,当用户单击某个单元格时,它会在 DetailViewController 中加载网页。问题是,在 iPhone 版本(这是一个通用应用程序)上,我必须单击单元格,然后返回 MasterViewController,然后再次单击单元格才能加载网页。我只需要做一次,我认为这就像第一次启动网页或其他东西一样。但在 iPad 版本上,它会在第一次加载。那么怎么回事?

这是我的 applicationDidFinishLaunching AppDelegate.m 文件的代码,我在其中初始化 DetailViewController

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPhone" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
self.window.rootViewController = self.navigationController;
masterViewController.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPhone" bundle:nil];
} else {
MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPad" bundle:nil];
UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

masterViewController.detailViewController = detailViewController;

self.splitViewController = [[UISplitViewController alloc] init];
self.splitViewController.delegate = detailViewController;
self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController];

self.window.rootViewController = self.splitViewController;
}

这是 didSelectCellAtIndexPath 的代码

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *object = _objects[indexPath.row];
NSURL *ex = [NSURL URLWithString:[object objectForKey:@"url"]];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.detailViewController.detailItem = object;
[self.detailViewController loadURL:ex];
self.detailViewController.detailItem = object;
[self.detailViewController loadURL:ex];
[self.navigationController pushViewController:self.detailViewController animated:YES];
} else {
self.detailViewController.detailItem = object;
[self.detailViewController loadURL:ex];
}
}

最佳答案

在 iPad 上,您在 Split View Controller 中拥有 2 个 Controller ,因此它们会被实例化,并且它们的 View 会在应用程序启动时加载。在 iPhone 上,第二个 Controller 被实例化,但它的 View 只有在你按下它时才会加载——我认为这就是区别。您应该尝试将detailController方法loadURL:移动到它的viewDidAppear方法,而不是将其放在主 Controller 的didSelectRowAtIndexPath方法中。

关于ios - DetailViewController 仅在第二次加载网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14653212/

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