Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让iPhone应用程序显示两种不同视图之一_Iphone_Objective C_Uiview_Uinavigationcontroller_Delegates - Fatal编程技术网

让iPhone应用程序显示两种不同视图之一

让iPhone应用程序显示两种不同视图之一,iphone,objective-c,uiview,uinavigationcontroller,delegates,Iphone,Objective C,Uiview,Uinavigationcontroller,Delegates,我有一个程序,我们正在使用导航控制器,需要应用程序启动到两个不同的视图之一。基本上,如果以前输入过某些信息,那么我们需要启动应用程序来查看A,但如果从未输入过信息,那么我们需要启动应用程序来查看B。我很难让它正常工作,我想知道如果有什么方法可以实现这一点。我确信这需要在应用程序代理中完成,但我不确定如何完成。提前谢谢 从您的问题来看,您的UINavigationController似乎与根视图控制器一起定义在XIB中。在这种情况下,您需要从应用程序代理的application:didfishla

我有一个程序,我们正在使用导航控制器,需要应用程序启动到两个不同的视图之一。基本上,如果以前输入过某些信息,那么我们需要启动应用程序来查看A,但如果从未输入过信息,那么我们需要启动应用程序来查看B。我很难让它正常工作,我想知道如果有什么方法可以实现这一点。我确信这需要在应用程序代理中完成,但我不确定如何完成。提前谢谢

从您的问题来看,您的UINavigationController似乎与根视图控制器一起定义在XIB中。在这种情况下,您需要从应用程序代理的
application:didfishlaunchingwithoptions:
中加载相应的视图。从那里,您可以使用
setViewControllers:animated:

设置UINavigationController的第一个视图控制器。我遇到了这个问题并解决了它

在导航控制器中,构建容器视图

然后根据您的条件,您决定将什么视图放入容器中。您可能已经事先构建了这两个视图。然后,可以将视图添加到容器视图中。
我认为“Elements”示例中有一个容器视图示例。

在应用程序委托中实现以下方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
    [window makeKeyAndVisible];
    if(condition) {
        [window addSubview:[mainViewControllerA view]];
    } else {
        [window addSubview:[mainViewControllerB view]];
    }
}

在那里,您可以根据您的条件选择要加载的视图。

问题是,它只是一个视图控制器,具有多个不同的视图。您是否在UIViewController中管理这些视图?您可以为拥有的每个视图创建属性,然后可以使用mainViewController.viewA、mainViewController.viewB等访问视图。