导航栏在详细侧面的主 - 细节控制器丢失

lug*_*nja 5 objective-c storyboard master-detail ipad ios

我做了不同的masterdetailview viewcontrollersstoryboard和链接的每个人都与推进segue.现在当我点击列表项新DetailViewController打开时,但每一个都没有navigationbar.我添加navigation item了每个View的顶部,为每一个添加了标题,但毕竟navigation bar没有显示.我正在研究iPad应用程序,并且在两个方向上都缺少导航栏.

编辑:

创建Master-Detail项目时,我的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;
}
Run Code Online (Sandbox Code Playgroud)

我的一个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
Run Code Online (Sandbox Code Playgroud)

Mar*_*arc 9

您的DetailViewController必须连接到UINavigationController.如果您从Xcode的"New Project"菜单中设置一个新的master-detail-project,您将得到:

在此输入图像描述

注意:每个Detail视图控制器必须连接到UINavigationController(直接或间接).

编辑:要连接多个UINavigationControllers,请执行以下操作:您的初始详细信息视图UINavigationController与拆分视图连接(像往常一样).其他每个细节视图UINavigationController都与主视图连接(使用替换segue):

在此输入图像描述

如果要为用户提供切换回初始详细信息视图的可能性,还必须将初始视图控制器与主服务器连接(因此具有两个连接,一个连接到拆分,一个连接到主服务器).

要在详细视图控制器之间切换,请performSegueWithIdentifier:sender:在主视图控制器中调用.

编辑2:

要将详细视图添加为拆分视图的委托,请实现以下方法,该方法早于调用 viewDidLoad

- (void)awakeFromNib
{
    self.splitViewController.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)