Vic*_*tor 62 uinavigationbar viewcontroller ios swift
我正在使用以下代码以编程方式导航到另一个ViewController.它工作正常,但有些隐藏了navigation bar.我该如何解决?(导航栏被embeding创建ViewController的navigation controller,如果该事项).
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("nextView") as NextViewController
self.presentViewController(nextViewController, animated:true, completion:nil)
Run Code Online (Sandbox Code Playgroud)
jai*_*jan 158
在Swift 3中
使用以编程方式创建的Controller
如果要导航到以编程方式创建的Controller,请执行以下操作:
newViewController.modalPresentationStyle = .fullScreen
Run Code Online (Sandbox Code Playgroud)
用StoryBoard创建了Controller
如果要使用标识符"newViewController"导航到StoryBoard上的Controller,请执行以下操作:
let newViewController = NewViewController()
self.navigationController?.pushViewController(newViewController, animated: true)
Run Code Online (Sandbox Code Playgroud)
zee*_*han 21
SWIFT 4.x
双引号中的字符串总是让我困惑,所以我认为对这个问题的回答需要一些图形表示来清除这一点.
对于银行应用程序,我有一个LoginViewController和一个BalanceViewController.每个都有各自的屏幕.
该应用程序启动并显示登录屏幕.登录成功后,应用程序将打开"余额"屏幕.
以下是它的外观:
登录成功的处理方式如下:
let storyBoard: UIStoryboard = UIStoryboard(name: "Balance", bundle: nil)
let balanceViewController = storyBoard.instantiateViewController(withIdentifier: "balance") as! BalanceViewController
self.present(balanceViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,故事板ID'balance'用小写字母表示代码的第二行,这是故事板设置中定义的ID,如附带的屏幕截图所示.
带有大写'B'的术语'Balance'是storyboard文件的名称,它在代码的第一行中使用.
我们知道在代码中使用硬编码字符串是一种非常糟糕的做法,但在iOS开发中它已经成为一种常见的做法,Xcode甚至都没有对它们发出警告.
oca*_*nal 14
您应该使用当前导航控制器推送新的viewcontroller,而不是存在.
self.navigationController.pushViewController(nextViewController, animated: true)
Run Code Online (Sandbox Code Playgroud)
根据@jaiswal Rajan 的回答。您可以像这样执行pushViewController:
let storyBoard: UIStoryboard = UIStoryboard(name: "NewBotStoryboard", bundle: nil)
let newViewController = storyBoard.instantiateViewController(withIdentifier: "NewViewController") as! NewViewController
self.navigationController?.pushViewController(newViewController, animated: true)
Run Code Online (Sandbox Code Playgroud)
所以如果你展示一个视图控制器,它不会显示在导航控制器中。它只需要完整的屏幕。对于这种情况,您必须创建另一个导航控制器并nextViewController为此添加您的root 用户并呈现这个新的导航控制器。
另一种方法是推送视图控制器。
self.presentViewController(nextViewController, animated:true, completion:nil)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看 Apple 文档:- https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/doc/uid/TP40006926-CH3-SW96
小智 5
OperationQueue.main.addOperation {
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let newViewController = storyBoard.instantiateViewController(withIdentifier: "Storyboard ID") as! NewViewController
self.present(newViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
当我将代码放入 中时OperationQueue.main.addOperation,它对我有用,它将在我的主线程中执行。
| 归档时间: |
|
| 查看次数: |
138827 次 |
| 最近记录: |