现在我还不是特别能适应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. C#基础2

    namespace 基础 //定义一个命名空间,为基础 { class Program //定义一个名称为Program的类 { static void Main(string[] args) //这 ...

  2. JavaSript模块化-AMD规范与CMD规范

    JavaScript模块化 在了解AMD,CMD规范前,先来简单地了解下什么是模块化,模块化开发. 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处 ...

  3. SAP LOGON DATA CHECK

    之前有朋友做过RFC登录验证,后来群里又有很多人问SAP的登录验证函数. 后来自己找找了,看看了,然后改写了一个LOGON DATA CHECK... FUNCTION ZUSER_CHECK_LOG ...

  4. Mac OS 下 mysql 找不到 mysql.sock 的问题

    mysql.sock 无法找到一般存在两种问题,一是mysql服务未启动,mysql.sock没有生成,二是mysql.sock的指向位置出错,在指向位置加个mysql.sock的软链接就可以解决. ...

  5. icon-font与svg

    icon font 使用与svg应用分享 icon font 字体概述 css3增加了@font-face属性,传统的浏览器是通过font-family来设置字体,如果系统里没有的话就用其它字体来代替 ...

  6. ORACLE行转列通用过程

    create or replace procedure row_to_col(tabname in varchar2,                                   group_ ...

  7. μC/OS-Ⅲ系统的中断管理

    一.典型的μC/OS-Ⅲ中断服务程序解析 μC/OS-Ⅲ系统中典型有内核参与中断服务程序示例如下: MyISR:                                             ...

  8. 深入了解 JavaScript 中的 for 循环

    在ECMAScript5(简称 ES5)中,有三种 for 循环,分别是: 简单for循环 for-in forEach 在2015年6月份发布的ECMAScript6(简称 ES6)中,新增了一种循 ...

  9. ASP.NET4.5从零开始(1)

    使用Web窗体 引言 前段时间客户A突然提出,B项目希望可以做成BS形式的,之前是CS的,因为我之前也没学过ASP.NET,于是一边百度,一边Coding,马马虎虎的把功能流程给调通,然后就交差了,想 ...

  10. 场景5 Performance Management

    场景5 Performance Management 性能调优(不能重启数据库) 索引 资源管理器 性能优化 统计分析 SQL性能分析 SPM (SQL执行计划管理) 堆表 :数据存储无序 位图索引 ...