【问题标题】:UIViewControllerUIViewController
【发布时间】:2011-03-17 14:27:31
【问题描述】:

我的问题是:我不明白我们可以使用 nib 文件创建 ViewController,而我们可以在没有 nib 文件的情况下创建它。我的意思是:例如,任何人都可以向我解释模板,基于导航的应用程序如何工作,第一个实例化的对象是什么?

感谢您的回答

【问题讨论】:

    标签: iphone cocoa-touch uikit


    【解决方案1】:

    应用程序的 Info.plist 文件包含一个名为“主 nib 文件基本名称”(NSMainNibFile) 的属性。此处设置的 nib 文件(默认为“MainWindow.xib”)控制启动时将加载的内容。

    如果您没有该设置,并且想要启动没有默认 nib 文件的应用程序,则需要在 main.m 文件中传递应用程序委托的名称。

    int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
    

    http://blog.hplogsdon.com/ios-applications-without-any-nib-files/

    【讨论】:

      【解决方案2】:

      实例化 UIViewControler 的唯一方法是:

      - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
      

      这意味着您“通常”要求它加载 .nib 文件...

      但您也可以将“nil”传递给两个参数:

      myUIViewController = [[MyUIViewController alloc] initWithNibName:nil bundle:nil];
      

      ...如果你想直接加载它并自己管理它。通常,您创建一个 UIViewController 的子类(在我的示例中为 MyUIViewController),并在其@implementation 中实现方法 loadView

      你需要在哪里创建你的类的视图

          - (void)loadView{
          UIView *aUIView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320, 480)];
          self.view = aUIView;
          aUIView.backgroundColor = [UIColor colorWithRed:.2 green:.3 blue:.5 alpha:1];
      //  aUIView... other properties to set if needed...
          [aUIView release];
          }
      

      这样您就可以在没有“.nib 文件”的情况下管理它,只通过代码添加所有对象和子视图...

      【讨论】:

      • 你不需要使用initWithNibName...你可以调用init。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      相关资源
      最近更新 更多