尝试将特定视图作为根应用到 UINavigationController 时遇到问题

Posted

技术标签:

【中文标题】尝试将特定视图作为根应用到 UINavigationController 时遇到问题【英文标题】:Trouble Trying to Apply Specific View to UINavigationController as Root 【发布时间】:2014-02-04 21:34:01 【问题描述】:

我正在创建一个应用程序,其中有一个显示三个按钮的主视图。根据单击的按钮,我会将用户发送到新视图。

正如您在下面的屏幕截图中所见,我设置了故事板来处理按钮及其重定向。

我正在尝试使用三个按钮以编程方式将UINavigationController 添加到主屏幕。到目前为止,这是我的尝试:

myAppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    // Override point for customization after application launch.    
    UINavigationController *home = [[UINavigationController alloc]init];

    myViewController  *homeView = [[myViewController alloc]init];
    [home setViewControllers:[NSArray arrayWithObjects:homeView, nil]];
    [self.window setRootViewController:home];

    return YES;    

开启myViewController.m

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self.navigationItem setTitle:@"Home"];

    //create UIBarButtonItem

    UIBarButtonItem *goToAddBoardButton = [[UIBarButtonItem alloc]initWithTitle:@"+ Add" style:(UIBarButtonItemStylePlain) target:self action:@selector(AddBoardTranisition)];
    [self.navigationItem setRightBarButtonItem:goToAddBoardButton];





- (void) AddBoardTranisition

    AddBoard *addBoardView = [[AddBoard alloc]init];
    [[self navigationController]pushViewController:addBoardView animated:YES];


此时,当用户单击右上角的+ Add 按钮时,您可能会看到我正在完全转换到另一个视图。这适用于将用户发送到新的 Class 文件,但我需要的是有点不同。

首先,我想展示带有 3 个按钮的 home 视图。然后在他们点击按钮后,他们被发送到一个包含它自己的导航控制器的新视图类。感谢您关注这个问题。

【问题讨论】:

【参考方案1】:

您需要将根视图控制器(与您称为主视图相关联的控制器)嵌入到导航控制器中。在 Interface Builder 中确保选择了主视图控制器,然后单击 Xcode 菜单中的 Editor,单击 Embed in...,然后选择 Navigation Controller。然后,您可以从 applicationDidFinishLaunchingWithOptions: 方法中删除代码行。

【讨论】:

@Presto 很高兴我能帮上忙。祝你的应用好运!

以上是关于尝试将特定视图作为根应用到 UINavigationController 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

UIViewController 根视图中的 UITableView 显示

如何将 UINavigationController 添加到 UITabBar 应用程序的第一个视图?

在将导航控制器弹出回根视图的选项卡栏上检测到双击

UINavigationController 错误

我应该如何弹出到特定的视图控制器?

在Mac应用程序中添加自定义视图控制器作为根视图控制器?