现在我还不是特别能适应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. 在object,embed上添加跳转链接(视频上添加跳转)

    今天遇到个问题,就是在视频上添加跳转链接时,谷歌浏览器能正常跳转,但是ie下,却无效,视频使用object引入,<a>标签跟随其后采用绝对定位,和平时的图片加跳转操作一样.原来是需要加上& ...

  2. CSS3--overflow属性

    overflow:当内容溢出元素框时发生的事情: overflow:默认,内容不会裁剪,会呈现在元素框之外: overflow:hidden:内容会被裁剪,并且其余部分是不可见的(清除浮动) over ...

  3. 四种主要网络IO虚拟化模型

    本文主要为大家简要介绍VMware.Redhat.Citrix.Microsoft主要虚拟化厂商使用的4种主要的虚拟化IO模型 (emulation.para-virtualization.pass- ...

  4. js中getBoundingClientRect的作用及兼容方案

    js中getBoundingClientRect的作用及兼容方案 1.getBoundingClientRect的作用 getBoundingClientRect用于获取某个html元素相对于视窗的位 ...

  5. abap调vb写的dll实现电子天平的读数(带控件版)

    废话不多说,直接上. 鉴于abap调研的dll文件需要在wins注册,自己尝试过delphi和C#感觉不是很好,最后毅然选择了VB来写 因为需要用到MScomm控件,所以对于将要写的dll需要带for ...

  6. 关于jQuery事件绑定

    转自:http://www.cnblogs.com/gaojun/p/3497582.html html: <a href="#" onclick="addBtn( ...

  7. continue用法

    之前,一直没搞懂continue的用法,现在知道其中一个了: continue语句用于终止本轮循环,返回循环头部,开始下一轮循环 var i = 0; while (i < 10){ i++; ...

  8. java入门笔记

    1.安装路径:不能含空格和中文,建议安装路径d:\java\jdk   2.名词 bin:binary javac:java compile java:运行java文件   3.命名: (1)尽量用英 ...

  9. Android genymotion安装输入法不兼容

    genymotion 此应用与您的手机不兼容 http://blog.csdn.net/caiwenfeng_for_23/article/details/41692923

  10. PDF 补丁丁 0.5.0.2078 测试版发布:不用打字,也能加书签

    新增功能: 在书签编辑器加书签,不再需要自己输文本. 书签编辑器的阅读界面增加了识别文本字符的功能,可使用该功能在添加书签时识别文本. 右键点击文本内容,可插入书签(对于扫描版的文档,在激活识别引擎后 ...