Iphone 参考点:是否替换根视图控制器/应用程序代理?

Iphone 参考点:是否替换根视图控制器/应用程序代理?,iphone,objective-c,xcode,Iphone,Objective C,Xcode,很明显,我是iOS开发新手,我在网上找到的许多教程中遇到了一些问题。虽然我理解这些程序中的大部分代码,但我不知道如何翻译这一事实,这可能很简单 许多教程使用基于导航的模板或基于视图的模板,但我想尝试构建选项卡栏应用程序。教程使用App Delegate或rootViewController(作为导航控制器),但由于我的选项卡栏是我的rootViewController,所以我总是遇到问题。我也无法在大多数代码中使用ApplicationIDFinishLaunching方法,因为从技术上讲,它只

很明显,我是iOS开发新手,我在网上找到的许多教程中遇到了一些问题。虽然我理解这些程序中的大部分代码,但我不知道如何翻译这一事实,这可能很简单

许多教程使用基于导航的模板或基于视图的模板,但我想尝试构建选项卡栏应用程序。教程使用App Delegate或rootViewController(作为导航控制器),但由于我的选项卡栏是我的rootViewController,所以我总是遇到问题。我也无法在大多数代码中使用ApplicationIDFinishLaunching方法,因为从技术上讲,它只适用于启动时的第一个选项卡

以下是我的问题:

  • 是否有办法将这些文件“转换”为新类(例如,为每个选项卡的应用程序委派代码创建NSObject实例,或创建UINavigationViewController实例)

  • 如果我可以创建NSObject实例,如何确保代码链接到我在viewController中创建的对象

  • 如果我可以创建一个使用UINavigationController的文件,我如何欺骗程序,使其临时允许Nav控制器成为rootViewController


  • 非常感谢

    在我的脑海里,我只能回答第三个问题,你可以用我知道的两种方法中的一种来回答,如果有人认为这两种方法中的任何一种是错误的或不好的做法,我希望有人纠正我,因为这就是我一直在做的事情

    [appDelegate.window addSubview:appDelegate.newRootViewController.view];
    appDelegate.window.rootViewController = appDelegate.newRootViewController; 
    

    两者都应该完成同样的任务,不过如果你能帮助的话,第二个版本是理想的。同样值得注意的是,对于第一个,没有任何欺骗,实际上您正在将应用程序的rootViewController设置为不同的设置

    我会做一些挖掘,看看我是否也能回答你的任何其他问题

    编辑:所以在重新阅读和思考之后,我认为另外两个问题可以通过澄清一个选项卡栏应用程序来回答。不幸的是,我也是iOS新手,我还没有机会创建一个选项卡栏应用程序,所以我不想给你错误的信息。我建议你去看看,希望它能让你更好地了解Tab Bar应用程序的工作原理。我一直在用那本电子书和那个网站上的另一本结合Ray Wenderlich的教程自学

    不管怎样,我希望这在某种程度上有所帮助,如果你想让我尝试澄清或详细说明任何事情,请发表评论,我会看看我是否能提供帮助

    祝你好运


    -Karoly

    在我的脑海里,我只能为你回答第三个问题,你可以用我知道的两种方法之一来回答,如果有人认为这两种方法中的任何一种都是错误的或不好的做法,我希望有人纠正我,因为我一直在这样做

    [appDelegate.window addSubview:appDelegate.newRootViewController.view];
    appDelegate.window.rootViewController = appDelegate.newRootViewController; 
    

    两者都应该完成同样的任务,不过如果你能帮助的话,第二个版本是理想的。同样值得注意的是,对于第一个,没有任何欺骗,实际上您正在将应用程序的rootViewController设置为不同的设置

    我会做一些挖掘,看看我是否也能回答你的任何其他问题

    编辑:所以在重新阅读和思考之后,我认为另外两个问题可以通过澄清一个选项卡栏应用程序来回答。不幸的是,我也是iOS新手,我还没有机会创建一个选项卡栏应用程序,所以我不想给你错误的信息。我建议你去看看,希望它能让你更好地了解Tab Bar应用程序的工作原理。我一直在用那本电子书和那个网站上的另一本结合Ray Wenderlich的教程自学

    不管怎样,我希望这在某种程度上有所帮助,如果你想让我尝试澄清或详细说明任何事情,请发表评论,我会看看我是否能提供帮助

    祝你好运


    -Karoly

    您误解了应用程序代理的工作方式

    它是应用程序的委托,而不是控制器。在调用ApplicationIDFinishLaunching时,可以从xib加载控制器,但这两个事件之间没有连接

    ApplicationIDFinishLaunching只是在应用程序准备好使用之前进行最终设置的地方

    如果没有在主xib文件中实例化选项卡栏控制器,可以在此处实例化它,然后实例化它的所有控制器并将它们添加到选项卡栏控制器。在执行此操作时,可以加载plist,在控制器上设置属性,等等

    如果您确实在主xib文件中实例化了选项卡栏控制器,您仍然可以在此处访问其控制器。您可以编辑这些控制器,也可以丢弃它们并创建新的控制器。您甚至可以扔掉选项卡栏控制器,切换到导航控制器

    我不能回答问题1和2,因为它们背后的假设是无效的


    与其问你如何解决应用程序代理和选项卡栏控制器的感知问题,不如描述你试图实现的目标。

    你误解了应用程序代理的工作方式

    它是应用程序的委托,而不是控制器。在调用ApplicationIDFinishLaunching时,可以从xib加载控制器,但这两个事件之间没有连接

    ApplicationIDFinishLaunching只是在应用程序准备好使用之前进行最终设置的地方

    如果没有在主xib文件中实例化选项卡栏控制器,可以在此处实例化它,然后实例化它的所有控制器并将它们添加到选项卡栏控制器。在执行此操作时,可以加载plist,在控制器上设置属性,等等

    如果您确实实例化了