【问题标题】:Cocoa - Adding a Navigation Controller to a subviewCocoa - 将导航控制器添加到子视图
【发布时间】:2011-01-27 03:51:35
【问题描述】:

我目前正在为 iPad 开发一个基于视图的应用程序,该应用程序在主页上有 3 个单独的视图。顶部的自定义菜单,侧面的状态列表和主视图。我在主视图中遇到的问题是尝试添加导航控制器。

在 AppPadViewController.h 中

@interface AppPadViewController.h : UIViewController {
    MainViewController *MainView;
}

@property (nonatomic,retain) IBOutlet MainViewController *MainView;

在 AppPadViewController.m 中

@synthesize MainView;

- (void) viewDidLoad {
    [super viewDidLoad];

    MainView.navigationItem.title = @"Home";
    UINavigationController *mainNavController = [[UINavigationController alloc] initWithNibName:@"MainView" bundle:[NSBundle mainBundle]];

    self.MainView = [MainViewController alloc] initWithRootViewController:mainNavController];
}

我在 nib 中添加了我想要的视图,并将其绑定到 MainView,然后添加 MainViewController 并将其绑定到 File Owner 和视图。

当我运行它时,我在 initWithRootViewController 行中收到“无法识别的选择器”错误。

任何人都可以看到代码有任何问题,或者建议一种更好的方法来将导航控制器添加到子视图?

【问题讨论】:

  • 你的代码格式不正常,AppPadViewController.h -> AppPadViewController, *MainView -> *mainView.

标签: objective-c cocoa-touch uinavigationcontroller


【解决方案1】:

你的两个视图控制器颠倒了。试试这样的:

self.MainView = [[MainViewController alloc] initWithNibName:@"MainView" bundle:[NSBundle mainBundle]];

UINavigationController *mainNavController = [[UINavigationController alloc] initWithRootViewController:MainView];

【讨论】:

  • 这停止了我得到的错误,但是当我加载应用程序时视图仍然没有导航栏。我还缺少另一个步骤来使它出现吗?我在主视图控制器 viewDidLoad 函数中设置了 MainView 的 navigationItem.title。
  • 您应该将UINavigationController 的视图添加到您的窗口,而不是MainViewController 的视图。
  • 谢谢。我不确定它是否完全是“正确”的做法,但我最终在主页上创建了一个子视图,将其绑定到 IB 中的视图,然后将 UINavigationController 添加到该视图中,这样我就得到了合适的尺寸等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2017-12-23
相关资源
最近更新 更多