gpt4 book ai didi

ios - 缺少主从 Controller 的详细信息侧的导航栏

转载 作者:可可西里 更新时间:2023-11-01 04:23:41 25 4
gpt4 key购买 nike

我在我的 storyboard 中使用不同的 viewcontrollers 制作了 masterdetailview,并使用 push segue 链接了每一个。现在,当我单击列表项时,新的 DetailViewController 打开,但每个列表项都没有 navigationbar。我在每个 View 的顶部添加了 navigation item,为每个 View 添加了标题,但毕竟 navigation bar 没有显示。我正在开发 iPad 应用程序,但在两个方向上都缺少导航栏。

编辑:

当您创建主从项目时,我的 appDelegate 与模板相同:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
}

return YES;
}

我的一个 DetailViewControllers:

#import "MediaExpDetailViewController.h"

@interface MediaExpDetailViewController ()
@property (strong, nonatomic) UIPopoverController *masterPopoverController;
@end

@implementation MediaExpDetailViewController

#pragma mark - Managing the detail item

- (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
}
if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}


- (void)viewDidLoad{

[super viewDidLoad];
}

#pragma mark - Split view

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
barButtonItem.title = NSLocalizedString(@"MasterButton", @"Master");
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = popoverController;
}

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
// Called when the view is shown again in the split view, invalidating the button and popover controller.
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
self.masterPopoverController = nil;
}


@end

最佳答案

您的 DetailViewController 必须连接到 UINavigationController。如果您从 Xcode 的“新建项目”菜单中设置一个新的主从项目,您将得到:

enter image description here

注意:每个细节 View Controller 都必须连接到 UINavigationController(直接或间接)。

编辑:要连接多个 UINavigationController,请执行以下操作:您的初始详细信息 View UINavigationController 与 Split View相关联(像往常一样)。其他每个详细 View UINavigationController 都与主视图相连(使用 replace segue):

enter image description here

如果你想给用户切换回初始详细 View 的可能性,你还必须将初始 View Controller 连接到主视图(因此有两个连接,一个到拆分,一个到主视图)。

要在详细 View Controller 之间切换,您可以在主视图 Controller 中调用 performSegueWithIdentifier:sender:

编辑 2:

要将详细 View 添加为 Split View的委托(delegate),请实现以下方法,该方法在 viewDidLoad

之前被调用
- (void)awakeFromNib
{
self.splitViewController.delegate = self;
}

关于ios - 缺少主从 Controller 的详细信息侧的导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20140737/

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