【问题标题】:Building a Navigation-Based project starting from a Window based project从基于窗口的项目开始构建基于导航的项目
【发布时间】:2011-09-16 06:20:49
【问题描述】:

只是想了解不同项目类型的构建方式,我一定遗漏了一些东西。

我正在尝试从基于窗口的应用程序开始,然后添加一个导航控制器,以便了解不同组件如何与 Window 和 App 委托一起使用。

这就是我所做的:

  • 创建了一个基于窗口的项目
  • 在我的应用 delegate.h 我添加了
    @property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

在我的应用 delegate.m 中我添加了:

@synthesize navigationController;

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}
  • 在 MainWindow.xib 文件中,我在下面添加了一个 NavigationController 窗口
  • 创建了一个新的 UIViewController 子类 (FirstView.h/m)
  • 将 NavigationController 的根视图控制器指向 FirstView

构建干净,当我启动时,我得到一个全白屏。

我错过了什么?

【问题讨论】:

    标签: iphone ios xcode4 uinavigationcontroller


    【解决方案1】:

    添加此[self.window addSubview:self.navigationController.view]; 您需要将导航控制器视图添加到窗口。还要确保导航控制器的插座已连接。您还需要为导航控制器添加根视图控制器

    【讨论】:

    • 没有变化。如果是这种情况 - 为什么当您创建一个新的基于导航的项目并查看 AppDelegate.m 时没有出现此行?
    • 导航控制器需要添加根视图控制器
    • 我做了 - 在 MainWindow.xib 中,在 Navigation Controller 中选择了 Root View Controller 并选择了我的 FirstView 作为类...
    【解决方案2】:

    实际上 barfoon..您的导航控制器不包含任何 UIViewController。首先创建新的UIViewController,然后将其添加到UINavigationControllerUINavigationController 就像 stack 一样,它处理每个添加的 UIViewController ,即来回遍历。 例如..

    ToDoController *toDoObj = [[ToDoController alloc] initWithNibName:@"ToDoController" bundle:[NSBundle mainBundle]];
    UINavigationController *toDoNav = [[UINavigationController alloc] initWithRootViewController:toDoObj];
    [self.window addSubview:toDoNav.view];
    

    【讨论】:

    • 我不想alloc一个UINavigationController - 我已经在头文件中声明了一个,在实现中合成并分配它,它存在于.xib中
    • 做到了 - 仍然是一个空白屏幕
    • 实际上 barfoon 您需要与委托对象建立链接(在 MainWindow.xib 中的黄色对象中)并在 didFinishLaunchingWithOptions 中编写此代码:FirstView *fView = [[FirstView alloc] initWithNibName:@"FirstView"捆绑:[NSBundle mainBundle]]; NSArray *objects = [NSArray arrayWithObject:fView]; [self.navigationController setViewControllers:objects]; [self.window addSubview:self.navigationController.view]; [self.window makeKeyAndVisible];
    【解决方案3】:

    想通了 - 我必须创建一个新的引用插座并将导航控制器连接到 .xib 中的 App Delegate。

    【讨论】:

      猜你喜欢
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多