Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
Objective c 是否使用导航控制器加载视图?_Objective C - Fatal编程技术网

Objective c 是否使用导航控制器加载视图?

Objective c 是否使用导航控制器加载视图?,objective-c,Objective C,我有一个应用程序,其中我的主视图嵌入在导航控制器中。从那里,按钮推到其他视图控制器上。这一切都很好。但是,它推送的其中一个视图控制器会更新根的一个值并再次显示它。但是,这一次,它只显示ViewController而不显示导航控制器,当然,按下按钮返回将导致崩溃。希望这张照片有助于理解我的问题。按enter键并不是什么大问题,我只是在键盘返回时调用这个函数 返回主控制器的代码: -(void)createNewMain:(NSString*)newAddress { ViewControl

我有一个应用程序,其中我的主视图嵌入在导航控制器中。从那里,按钮推到其他视图控制器上。这一切都很好。但是,它推送的其中一个视图控制器会更新根的一个值并再次显示它。但是,这一次,它只显示ViewController而不显示导航控制器,当然,按下按钮返回将导致崩溃。希望这张照片有助于理解我的问题。按enter键并不是什么大问题,我只是在键盘返回时调用这个函数

返回主控制器的代码:

-(void)createNewMain:(NSString*)newAddress {
    ViewController* newController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainView"];
    newController.labelText = newAddress;
    newController.connected = self.connected;
    [self presentViewController:newController animated:YES completion:nil];  
}

您确实不想返回到根控制器的新实例。要正确返回到根控制器,您需要做的是从导航控制器的堆栈中弹出所有其他控件,如下所示:


[self.navigationController-popToRootViewControllerAnimated:是]

您真的不想返回到根控制器的新实例。要正确返回到根控制器,您需要做的是从导航控制器的堆栈中弹出所有其他控件,如下所示:


[self.navigationController-popToRootViewControllerAnimated:是]

使用委派将所需的预期/所需消息从Pi控制器传递到根视图控制器,并根据消息进行设置。您不需要从那里创建根视图控制器的新实例。通过使用,您始终可以从导航堆栈中的任何位置返回到根视图控制器

[[self navigationController] popToRootViewControllerAnimated:YES];

使用委派将所需的预期/所需消息从Pi控制器传递到根视图控制器,并根据消息进行设置。您不需要从那里创建根视图控制器的新实例。通过使用,您始终可以从导航堆栈中的任何位置返回到根视图控制器

[[self navigationController] popToRootViewControllerAnimated:YES];

问题很简单,您正在以模态方式呈现实例化的视图控制器

替换

[self presentViewController:newController animated:YES completion:nil];

此外,您还可以从情节提要中创建一个序列来执行此操作。当segue执行时,它将创建一个新实例,而不会使用以前创建的实例


注意:如果您不需要创建一个新的实例,请考虑使用委托来在对象之间交换信息。

< P>问题很简单,您正在以实例化的方式呈现实例化视图控制器。 替换

[self presentViewController:newController animated:YES completion:nil];

此外,您还可以从情节提要中创建一个序列来执行此操作。当segue执行时,它将创建一个新实例,而不会使用以前创建的实例


注意:如果您不需要创建一个新的实例,请考虑使用委托来在对象之间交换信息。< /P>,您真的只想从导航堆栈中弹出连接视图控制器吗?您真的只是想从导航堆栈中弹出连接视图控制器吗?谢谢!我只有一个字符串可以传递回根,所以我现在还不想深入研究委托。然而,在故事板中,如果我创建一个从视图到根的推送序列,它不会干扰从根控制器到视图的现有推送序列吗?不会。如果我们从第二个视图控制器到根视图控制器创建一个新的序列,将创建一个新的实例。谢谢!我只有一个字符串可以传递回根,所以我现在还不想深入研究委托。然而,在故事板中,如果我创建一个从视图到根的推送序列,它不会干扰从根控制器到视图的现有推送序列吗?不会。如果我们从第二个视图控制器到根视图控制器创建一个新的segue,就会创建一个新的实例。