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