从UWP到SWIFT - TableBarController 和 Pivot

时间:2021-01-27 18:59:19

现在我还不是特别能适应swift中页面做bar的做法,感觉很奇怪。

现在我正在做一个简单的新浪微博,有一个主页,顶部有导航栏,底部是选项卡。

从UWP到SWIFT - TableBarController 和 Pivot

如果用wup来做的话,顶部应该是我们自己写的Usercontcontro,然后再用一个pivot,来自定义header之类的就能完成。整体工作量再blend上面就能完成。但是来看看swift要怎么做。

swift中的页面元素是有一定结构关系,先把用到的东西列出来

UITabBarItem(扫一扫和添加好友)

UIViewController(红色区域)

UINavigationController (顶部高度部分)

UITabBarController(选项卡容器)

要做出上图的东西:

1.建立内容, home主页

class HomeViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

}

}

2.将home主页加上navigation的属性(类似于uwp中pivotItem)

let nvc = UINavigationController(rootViewController: HomeViewController())

这里补充下,转换为uinavigationcontroller后,页面就可以通过nvc.navigationController?.pushViewController()来页面跳转,当然UI上也会出现顶部的条,也多了title等属性。

3.将nvc加入到UITabBarController

let table = UITabBarController()

table.addChildViewController(nvc)

4.显示到UI

self.window?.rootViewController = table  或者通过跳转页面方法到table

到了这里,table就已经是一个页面了,是不是很神奇。在uwp的理解,这还仅仅是个usercontrol,我去~

5. 扫一扫和添加朋友

实际上将UIViewController转换为UINavigationController后,就有可以使用这些属性了

self.navigationItem.rightBarButtonItem = UIBarButtonItem

其实UINavigationController是继承于UIViewController,如果你不转换为UINavigationController,上述属性的内容是不能被显示出来的

后来我慢慢明白,在swift中,这些tmd都只是些模板而已,模板!或者说是几种特殊页面,都继承与基础View,这些都是为了帮我们快速开发出产品。我这个去~  一时半会还不能跳出uwp中page的概念。在ios中,viewcontroller就是page,但是有特殊类型的page