在视图控制器子类上添加导航控制器

Posted

技术标签:

【中文标题】在视图控制器子类上添加导航控制器【英文标题】:Adding navigation controller on a view controller subclass 【发布时间】:2012-07-02 05:38:53 【问题描述】:

如何在新创建的视图控制器上添加导航控制器?我到处搜索,但所有教程都来自创建导航控制器项目。

任何人都可以将 mo 带到使用视图控制器子类创建导航控制器的教程?

到目前为止我在做什么:

我创建了一个 UIViewController 项目,并且我有这样的东西可以使用导航控制器转到另一个视图控制器。

NavController *view=[[NavController alloc] initWithNibName:nil bundle:nil];
view.modalTransitionStyle=UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:view animated:YES];
[view release];

添加了一个新的视图控制器子类。

添加 > 新文件 > 带有 nib 的 UIViewController 子类

在 NavController.h 上

#import <UIKit/UIKit.h>


@interface NavController : UIViewController 

    IBOutlet UIWindow *window;
    IBOutlet UINavigationController *navCon;



@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) UINavigationController *navCon;

@end

在 NavController.m 上

#import "NavController.h"


@implementation NavController

@synthesize window,navCon;


- (void)viewDidUnload 
    [super viewDidUnload];



- (void)dealloc 
    [window release];
    [navCon release];
    [super dealloc];



@end

我已经在我的 IB 上拖动了一个 Navigation Conrtoller 和一个 Window,并将窗口连接到窗口,并将 Navigation Controller 连接到 navcon 插座,但是接下来呢?

【问题讨论】:

【参考方案1】:

如果您使用情节提要,请选择您的视图控制器,然后在顶部菜单中选择“编辑器”/“嵌入”/“导航控制器”。

【讨论】:

【参考方案2】:

通常,您必须在 Appdelegate.h 中创建一个 Navigationcontroller 对象(就像现有的窗口对象一样)。之后,您将 ViewController 的 h.File 导入 Appdelegate.m 并像以下示例中的 menuviewcontroller 一样对其进行初始化。 ***

要调用另一个视图,请使用以下代码行,以便导航控制器为您处理一切。

#import Viewcontroller

ViewControllerName controllerVarName = [ViewControllerName alloc] init];

[self.navigationcontroller pushViewController:_ViewControllerName animated:YES];

在您的特定 ViewController 中,使用此行来设置 Navigationcontroller 将使用的标题:

self.title = @"titleName";

【讨论】:

感谢您的回复,在我的 appdelegate 中我添加了一个 UINavigationController。我有一个带有登录页面的视图控制器,登录后我添加了这个:[appDelegate.viewController.view removeFromSuperview]; appDelegate.viewController.view = nil; [appDelegate.window addSubview:appDelegate.navigationController.view];因此视图现在更改为导航控制器,然后我创建了另一个名为“MainView”的视图,我将导航控制器笔尖指向“MainView”。那么在“MainView”中如何访问导航控制器? self.title 不起作用。 对不起,忘记了我代码块开头的自我。当启动一个新的“子视图”时,你用这个方法推动它。其他一切,比如回到屏幕之前,都将由导航控制器处理。要显示被调用视图的标题,只需将 "self.title = @"titleName" " 插入 ViewController 的 ViewDidLoad() 中。你只需要用这条线来区分每一个视图。还有一些方法可以动态完成,但开始时更容易 在我的 mainwindow.xib > 导航控制器上,我添加了一个名为“MainViewController”的 nib,“MainViewController”是 uiviewcontroller 子类,在“MainViewController.h”中我添加了“self.title = @”titleName”但是它似乎不起作用。

以上是关于在视图控制器子类上添加导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何将导航控制器添加到 xib

导航栏在第二次和后续出现时隐藏在视图控制器上

ios入门笔记(导航控制器)

通过 UIPresentationController 子类呈现视图控制器时导航栏跳转

如何从标签栏视图控制器切换到另一个作为导航控制器子视图的视图

如何在导航栏顶部添加视图