IOS 有和没有故事板的开发
IOS development with and without storyboard
我已经为我的 IOS 应用程序开发了登录、注册和其他几个屏幕。现在我正在尝试为我的应用程序构建仪表板屏幕(将其视为类似于 Facebook 的新闻提要)但在故事板中创建 UI 时遇到困难。此外,如果 post 中没有图像,那么我希望 UITableView 单元格通过将 UIImageView 的高度设置为零来减小其大小,但这对我不起作用。总体而言,对于我的仪表板屏幕,我正在考虑从代码本身构建 UI。现在我有以下问题:
是否可以对某些屏幕使用故事板,而对其他屏幕不使用?
如果是,那么我如何从有故事板的屏幕(比如我的登录屏幕)导航到没有故事板的屏幕(比如我的仪表板屏幕)。
谢谢。
是的,你可以在不使用故事板的情况下制作应用程序,或者如果你想使用你也可以使用。
故事板的优点
1- Ease of Use
2- Visual
代码的优点
1-Control
2-Reusability
3- Merge Conflict
- 这是一些标准开发人员拒绝使用 Storyboard 的主要原因。合并冲突很难解决。这使得在同一个 Storyboard 上工作成为一个艰苦的过程。这不是一项简单的任务,因为我们的 Storyboard 合并冲突不仅仅包含代码,还有渲染 UI
.
的代码
当然,您可以使用故事板和代码来构建应用程序。这完全取决于您。对于导航,只需在您的代码中调用简单的 push 和 segues 方法。希望这有帮助。
您可以混合使用 iOS、
中的所有类型
- 故事板,2.xib,3,以编程方式
1。故事板
使用
let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewController")
navigationController?.pushViewController(vc!, animated: true)
其中 "ViewController"
是故事板 ID
2.XIB
let vc1 = TransHistoryViewController(nibName: "TransHistoryViewController", bundle: nil)
navigationController?.pushViewController(vc1, animated: true)
其中 "TransHistoryViewController"
是 xib 名称。
3。以编程方式
你必须创建 UIViewController()
instance 并分别跳转到那里。
使用故事板:首先将ViewController嵌入NavigationController
使用序列
数据传输代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let detailController = segue.destination as? SecondViewController
detailController.object = self.object
}
没有序列:
如果两个 ViewController 都在同一个故事板中
func foo() {
let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as? SecondViewController
self.navigationController?.pushViewController(secondViewController!, animated: true)
}
如果第二个ViewController在不同的故事板中
从捆绑包中获取情节提要,然后导航到它
func foo() {
let fooStoryboard = UIStoryboard.init(name: "Foo", bundle: Bundle.main)
let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as? SecondViewController
self.navigationController?.pushViewController(secondViewController!, animated: true)
}
没有故事板:
以 rootViewController 身份嵌入您的登录名ViewController,以便可以进行导航。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let fooStoryboard = UIStoryboard.init(name: "Foo", bundle: Bundle.main)
let loginViewController = fooStoryboard.instantiateViewControllerWithIdentifier("loginViewController") as? LoginViewController
let navigationController = UINavigationController(rootViewController: loginViewController)
self.window?.rootViewController = navigationController
return true
}
现在从登录ViewController您可以按照上面的建议以编程方式推送。
我已经为我的 IOS 应用程序开发了登录、注册和其他几个屏幕。现在我正在尝试为我的应用程序构建仪表板屏幕(将其视为类似于 Facebook 的新闻提要)但在故事板中创建 UI 时遇到困难。此外,如果 post 中没有图像,那么我希望 UITableView 单元格通过将 UIImageView 的高度设置为零来减小其大小,但这对我不起作用。总体而言,对于我的仪表板屏幕,我正在考虑从代码本身构建 UI。现在我有以下问题:
是否可以对某些屏幕使用故事板,而对其他屏幕不使用? 如果是,那么我如何从有故事板的屏幕(比如我的登录屏幕)导航到没有故事板的屏幕(比如我的仪表板屏幕)。
谢谢。
是的,你可以在不使用故事板的情况下制作应用程序,或者如果你想使用你也可以使用。 故事板的优点
1- Ease of Use
2- Visual
代码的优点
1-Control
2-Reusability
3- Merge Conflict
- 这是一些标准开发人员拒绝使用 Storyboard 的主要原因。合并冲突很难解决。这使得在同一个 Storyboard 上工作成为一个艰苦的过程。这不是一项简单的任务,因为我们的 Storyboard 合并冲突不仅仅包含代码,还有渲染 UI
.
当然,您可以使用故事板和代码来构建应用程序。这完全取决于您。对于导航,只需在您的代码中调用简单的 push 和 segues 方法。希望这有帮助。
您可以混合使用 iOS、
中的所有类型- 故事板,2.xib,3,以编程方式
1。故事板
使用
let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewController")
navigationController?.pushViewController(vc!, animated: true)
其中 "ViewController"
是故事板 ID
2.XIB
let vc1 = TransHistoryViewController(nibName: "TransHistoryViewController", bundle: nil)
navigationController?.pushViewController(vc1, animated: true)
其中 "TransHistoryViewController"
是 xib 名称。
3。以编程方式
你必须创建 UIViewController()
instance 并分别跳转到那里。
使用故事板:首先将ViewController嵌入NavigationController
使用序列
数据传输代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let detailController = segue.destination as? SecondViewController
detailController.object = self.object
}
没有序列:
如果两个 ViewController 都在同一个故事板中
func foo() {
let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as? SecondViewController
self.navigationController?.pushViewController(secondViewController!, animated: true)
}
如果第二个ViewController在不同的故事板中
从捆绑包中获取情节提要,然后导航到它
func foo() {
let fooStoryboard = UIStoryboard.init(name: "Foo", bundle: Bundle.main)
let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as? SecondViewController
self.navigationController?.pushViewController(secondViewController!, animated: true)
}
没有故事板:
以 rootViewController 身份嵌入您的登录名ViewController,以便可以进行导航。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let fooStoryboard = UIStoryboard.init(name: "Foo", bundle: Bundle.main)
let loginViewController = fooStoryboard.instantiateViewControllerWithIdentifier("loginViewController") as? LoginViewController
let navigationController = UINavigationController(rootViewController: loginViewController)
self.window?.rootViewController = navigationController
return true
}
现在从登录ViewController您可以按照上面的建议以编程方式推送。