在视图控制器子类上添加导航控制器
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”但是它似乎不起作用。以上是关于在视图控制器子类上添加导航控制器的主要内容,如果未能解决你的问题,请参考以下文章
通过 UIPresentationController 子类呈现视图控制器时导航栏跳转