我是一名Android开发人员,对iOS开发很陌生,并且我猜有一个非常基本的问题。
我已经读过,现在最好的做法是为多个视图控制器使用多个故事板,并以编程方式导航它们,如:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier :"viewController") as! UIViewController
self.present(viewController, animated: true, completion: nil)
假设我有两个故事板。在第一个我只有一个ViewController,在第二个我有两个ViewControllers。我使用第一个故事板和ViewController启动应用程序。在点击按钮之后,我想使用上面的代码使用其第一个ViewController呈现下一个故事板。下一个ViewController显示没有任何问题,但第一个故事板ViewController发生了什么?它是否仍然存在于堆栈中或被终止或类似的东西?
我问这个是因为如果我打电话
dismiss(animated: true, completion: nil)
在第二个故事板的第一个ViewController中,ViewController消失,旧的再次显示。 另外,如果我想在第二个故事板的第一个ViewController中的第二个故事板中显示第二个ViewController,第一个ViewController也会消失,并从第一个故事板中呈现ViewController。
在android中,如果我想开始下一个屏幕/活动,我会这样做:
startActivity(new Intent(CurrentActivity.this, NextActivity.class));
finish(); //to drop the current activity
当我在NextActivity内部并单击后退按钮时,整个应用程序将最小化。
我只想确保不在我的应用程序中构建大量的ViewControllers。
答案 0 :(得分:0)
所以我假设你想去VC1 -> VC2 -> VC3
。当你呈现VC3时,没有必要解雇VC2。这会创建一个导航堆栈。当您关闭VC3时,VC2仍然存在并且与解除VC2相同,VC1将在那里。如果您想要VC1呈现VC3,当您从VC1中解除VC2时,您需要从解雇呼叫的完成块中显示VC3。
答案 1 :(得分:0)
很抱歉这样说但是如果Xcode正在使用自动布局启动,则使用多个故事板是不好的做法
您只需使用自动布局。
示例:如果您在视图控制器中有UIButton,并且您希望根据ViewController的视图减少和增加。然后添加我在下面建议的约束
就是这样。跑步和检查。
如果要在两个ViewControllers之间切换
在第一个ViewController按钮的操作中写下面的代码。
let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "YourSecondVCIdentifier")
self.present(secondVC!, animated: true, completion: nil)
并在SecondViewController的Button的操作中编写以下代码。
self.dismiss(animated: true, completion: nil)