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

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

如果用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

从UWP到SWIFT - TableBarController 和 Pivot的更多相关文章

  1. 从UWP到SWIFT-页面间反向传值

    页面1跳转到页面2,在页面2点击button后,页面1的内容被改变.实际使用 protocol(就是c#中的interface),将页面1的viewcontroller转换为protocol传入页面2 ...

  2. 从UWP到SWIFT-开始

    hi,all 我呢,是一个win10 uwp的开发者,从wp7.wp8.wp8.1.win8.1 到现在的win10,一直在windows阵营,做过一些大家比较熟悉的东西现在也还是在做win10的uw ...

  3. UWP实现吸顶的Pivot

    话不多说,先上效果 这里使用了一个ScrollProgressProvider.cs,我们这篇文章先解析一下整体的动画思路,以后再详细解释这个Provider的实现方式. 结构 整个页面大致结构是 & ...

  4. UWP 禁止Pivot swip 手势

    以前想要禁止内置的手势动作,看了一下网上是设置 IsLocked="True". 但是拿到UWP上来,靠,设置了之后header只显示当前的那个header.这样的设计真是丑爆了. ...

  5. win10 uwp 修改Pivot Header 颜色

    我们在xaml创建一个Pivot <Pivot Grid.Row="1"> <PivotItem Header="lindexi">&l ...

  6. UWP 解决Webview在Pivot里面无法左右滑动的问题

    //为了解决webview在PivotItem里面,阻止pivot左右滑动. if (webView != null) { rootGrid.Children.Remove(webView); web ...

  7. [Swift]LeetCode724. 寻找数组的中心索引 | Find Pivot Index

    Given an array of integers nums, write a method that returns the "pivot" index of this arr ...

  8. UWP开发必备:常用数据列表控件汇总比较

    今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...

  9. 【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释

    目录 说明 项目结构 关键代码 演示视频 说明 上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的.项目不算复杂但是也不算简单,这篇文 ...

随机推荐

  1. Javascript中apply、call、bind

    网上文章虽多,大多复制粘贴,且晦涩难懂,我希望能够通过这篇文章,能够清晰的提升对apply.call.bind的认识,并且列出一些它们的妙用加深记忆. apply.call 在 javascript ...

  2. Java-用switch判断季节

    import java.util.*;class Demo3 { public static void main(String[] args) { //需求 :输入一个月份 ,判断月份属于哪一个季节 ...

  3. table中的td内容超出隐藏

    <table style="table-layout: fixed;width: XXX px"> <tr> <td style="whit ...

  4. 机器学习实战knn

    最近在学习这本书,按照书上的实例编写了knn.py的文件,使用canopy进行编辑,用shell交互时发现运行时报错: >>> kNN.classify0([0,0],group,l ...

  5. C语言执行时报错“表达式必须是可修改的左值,无法从“const char [3]”转换为“char [120]” ”,原因:字符串不能直接赋值

    解决该问题的方法:使用strcpy函数进行字符串拷贝   原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string ...

  6. 繁星——JQuery选择器之层级

    [ancestor descendant] 在给定元素下匹配所有后代元素.这个选择器的使用概率相当之高,使用示例如下: //HTML代码: <div id='div01'> <inp ...

  7. linux 网卡问题 Device eth0 does not seem to be present,delaying initialization.

    Device eth0 does not seem to be present,delaying initialization. 网上搜索后才发现原因所在:原来vmware在复制了虚拟机后会自动生成一 ...

  8. android两种基本联网方式与一种第三方开源项目的使用

    安卓请求网络的三种方式 在请求网络的时候一般常用的提交方式是post或者get请求,post请求安全,传输大小无限制,但是代码量多些,get请求是浏览器有大小限制,用户提交的信息在浏览器的地址栏显示出 ...

  9. 2014 NOIP 赛前自我整理提醒。

    空谈WA,实干AC. 所以作为一个就要上战场的OIer ,实干当然是最重要,但刷题不在多,要点牢记是关键,虽然本渣没记住多少,但还是列几点值得注意的小点. 1.战场上容不得失误. 对于每日都要敲键盘的 ...

  10. 调整ESX的VMFS磁盘格式的块大小,让单个虚拟磁盘支持更大容量

    调整ESX的VMFS磁盘格式的块大小,让单个虚拟磁盘支持更大容量 前因:客户搭建了VMware ESX企业版的测试平台:有一天接到一个需求,是测试数据库的,需要一个300G的磁盘. 解决过程: 1.按 ...