嵌入导航控制器(embed navigation controller)

2019-06-26 02:07发布

我刚刚更新了我的Xcode 4.2至4.3.3和我不断跨越一个问题来,才有可能在单个视图应用程序中添加导航控制器,因为当我尝试嵌入一个到控制器中没有任何反应。 我想有一个按钮连接到所述第二控制器和导航条回第一视图控制器两个视点控制器。

我想不出任何其他方式连接视图控制器,请帮我任何的思路。

Answer 1:

  1. 如果你不希望添加导航控制器,你可以使用现有的视图控制器之间转换presentViewController从第一个到第二个去, dismissViewControllerAnimated返回。

  2. 您正在使用NIB假设(否则你只是用故事板嵌入命令),如果你想添加一个导航控制器,你的NIB后,您还可以相应地改变你的应用程序代理。

所以,你可能有一个应用程序的委托,说是这样的:

//  AppDelegate.h

#import <UIKit/UIKit.h>

@class YourViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) YourViewController *viewController;

@end

更改此添加导航控制器(你可以在这里摆脱了先前的参考到您的主视图控制器):

//  AppDelegate.h

#import <UIKit/UIKit.h>

//@class YourViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

//@property (strong, nonatomic) YourViewController *viewController;
@property (strong, nonatomic) UINavigationController *navigationController;

@end

然后,在你的应用程序委托的实现文件,你有一个didFinishLaunchingWithOptions ,可能说是这样的:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    self.viewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
    self.window.rootViewController = self.viewController;

    [self.window makeKeyAndVisible];
    return YES;
}

您可以更改的说:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    //self.viewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
    //self.window.rootViewController = self.viewController;

    YourViewController *viewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
    self.window.rootViewController = self.navigationController;

    [self.window makeKeyAndVisible];
    return YES;
}

已经这样做了,你现在可以导航到一个发钞银行视图控制器到另一个使用真实pushViewController ,并返回popViewControllerAnimated 。 在您的viewDidLoad ,你还可以使用self.title = @"My Title"; 指挥控制一下出现在视图的导航栏。 你也可能要改变你的发钞银行的“顶酒吧”属性包括模拟度量的导航栏,这样就可以布局你的屏幕,有什么它会看起来像一个良好的感觉:

显然,如果你已经有了一个非ARC项目,与视图控制器的分配/初始化这些线路也应该有一个autorelease ,太(当你看到你的应用程序代理,这将是显而易见的)。



文章来源: embed navigation controller