Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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
Ios 实例化控件的标识符:是创建VC的副本,还是神奇地不创建脚本_Ios_Iphone_Uiviewcontroller_Uistoryboard - Fatal编程技术网

Ios 实例化控件的标识符:是创建VC的副本,还是神奇地不创建脚本

Ios 实例化控件的标识符:是创建VC的副本,还是神奇地不创建脚本,ios,iphone,uiviewcontroller,uistoryboard,Ios,Iphone,Uiviewcontroller,Uistoryboard,作为一名“年轻的iOS学徒”,我有以下愚蠢的问题要问- 在Xcode 5中,我创建了with(包含导航控制器,它正在管理3个其他视图控制器)和以下代码: 我的问题是:因为上面的代码中使用了self.window.rootViewController,这意味着应用程序已经加载了Main.storyboard文件,并且其中的VCs“冻结”已经实例化,对吗 这是否意味着,当我调用时,会创建每个VC的第二个副本 当我稍后在我的应用程序源代码中设置/更改VC的属性时,脚本管理的VC不会受到影响(但仍然显

作为一名“年轻的iOS学徒”,我有以下愚蠢的问题要问-

在Xcode 5中,我创建了with(包含导航控制器,它正在管理3个其他视图控制器)和以下代码:

我的问题是:因为上面的代码中使用了
self.window.rootViewController
,这意味着应用程序已经加载了Main.storyboard文件,并且其中的VCs“冻结”已经实例化,对吗

这是否意味着,当我调用时,会创建每个VC的第二个副本

当我稍后在我的应用程序源代码中设置/更改VC的属性时,脚本管理的VC不会受到影响(但仍然显示给用户)

应用程序已加载Main.storyboard文件

当我调用InstanceViewControllerWithiIdentifier时,就会创建每个VC的第二个副本

是,如果视图控制器位于根导航控制器内,则为否(因为应用程序还没有理由加载它们)。因此,主视图控制器为是,用户视图控制器为否

以后在VC上设置/更改属性

这取决于代码


故事板是一个容器,用你的话来说,“冻结”(真正存档)视图控制器和视图。您的代码不会更改情节提要内容,它只是在不同的时间根据不同的触发器加载归档文件的不同部分。一旦从情节提要存档中创建了这些元素,您就可以对其进行修改,但这是基于代码的运行时修改。

只需补充一点,即在didFinishLaunching中加载情节提要本身不会重复加载。在这个方法中,要么是自动加载,要么是代码。不过,额外的实例化是不必要的/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc1 = [storyboard instantiateViewControllerWithIdentifier:@"Master"];
    //UIViewController *vc2 = [storyboard instantiateViewControllerWithIdentifier:@"Login"];
    UIViewController *vc3 = [storyboard instantiateViewControllerWithIdentifier:@"User"];

    User *user = [User load];
    NSArray *controllers = (user ? @[vc1, vc3] : @[vc1]);

    UINavigationController *nc = (UINavigationController *)self.window.rootViewController;
    [nc setViewControllers:controllers];

    return YES;
}