本项目是《beginning iOS8 programming with swift》中的项目学习笔记==》全部笔记目录

------------------------------------------------------------------------------------------------------------------

1. 往DetailViewController里拖一个Tabel View控件,设置prototype cells为1,将imageView控件在文档视图中拖到Table View里面,作为Header,设置表格的数据源和代理。
2. Aspect Fit等图片设置原理如下图:

3. 往原型Cell里拖入两个Label控件,分别设置文字为Name和Value。并新建一个自定义UITableViewCell类DetailTableViewCell,并定义两个成员变量,关联到控件上。
4. 修改DetailViewController中的成员变量为Restaurant,实现表格数据源方法(貌似这里不用连线tableView到IBOutlet):

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("DetailTableCell", forIndexPath: indexPath) as DetailTableViewCell
switch indexPath.row {
case :
cell.nameLabel.text = "Name"
cell.valueLabel.text = restaurant.name
case :
cell.nameLabel.text = "Type"
cell.valueLabel.text = restaurant.type
case :
cell.nameLabel.text = "Location"
cell.valueLabel.text = restaurant.location
case :
cell.nameLabel.text = "Been here"
cell.valueLabel.text = restaurant.isVisited ? "I've been here" : "No"
default:
cell.nameLabel.text = ""
cell.valueLabel.text = ""
} // 设置单元格背景色
cell.backgroundColor = UIColor.clearColor()
// 清除多余的表格行
tableView.tableFooterView = UIView(frame: CGRectZero)
// 自定义单元格分割线
tableView.separatorColor = UIColor.orangeColor() return cell
}

效果图:

5. 自定义导航栏主题
在didFinishLaunchingWithOptions方法中自定义导航栏,也可以自定义一个导航控制器类,并在initialize方法中设置导航栏主题

// 设置导航栏背景色
UINavigationBar.appearance().barTintColor = UIColor.orangeColor()
// 设置导航栏上面Item的颜色
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
// 设置导航栏文字字体
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName: UIFont.systemFontOfSize(22.0)]

6. 设置返回按钮文字为空(viewDidLoad):

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)

7. 设置导航栏标题(Detail的viewDidLoad):

self.title = restaurant.name

8. 设置滑动隐藏导航栏。可以在storyboard中设置OnSwipe勾上,但是这样会对全局的导航栏生效,所以如果只想Restaurant表格滑动隐藏导航栏而Detail表格滑动不隐藏,最好是在代码里设置。可以在哪儿设置合适呢?viewDidLoad中吗?如果在Restaurant中设置true,在Detail中设置false,但是导航后并不能按照预期的变化。因为viewDidLoad方法只会在界面初次加载的时候执行一次。因此,在Restaurant控制器和Detail控制器的viewWillAppear方法中分别执行:

override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated) self.navigationController?.hidesBarsOnSwipe = true
} override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated) self.navigationController?.hidesBarsOnSwipe = false
self.navigationController?.setNavigationBarHidden(false, animated: true)
}

9. 现在导航栏文字颜色是白色,但是状态栏颜色是黑色,需要处理一下。
  9.1 如果是修改一个控制器的状态栏:

override func preferredStatusBarStyle() ->UIStatusBarStyle {
return .LightContent
}

9.2 如果是修改整个应用程序的状态栏:
    1. 修改View controller-based status bar appearance设置为NO

  2. 在didFinishLaunchingWithOptions方法中:
UIApplication.sharedApplication().statusBarStyle = .LightContent

第七章 美化DetailView界面的更多相关文章

  1. 第七章 探秘Qt的核心机制-信号与槽

    第七章 探秘Qt的核心机制-信号与槽 注:要想使用Qt的核心机制信号与槽,就必须在类的私有数据区声明Q_OBJECT宏,然后会有moc编译器负责读取这个宏进行代码转化,从而使Qt这个特有的机制得到使用 ...

  2. (转)iOS Wow体验 - 第七章 - 操作图例与触屏人机工学

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第七章译文精选,其余章节将陆续放出.上一篇:Wow ...

  3. 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能

    原文:[原创]构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测C ...

  4. 【黑金原创教程】【TimeQuest】【第七章】供源时钟与其他

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  5. 2017.11.6 JavaWeb-----第七章 JavaWeb常用开发模式与案例

    JavaWeb-----第七章 JavaWeb常用开发模式与案例 (1)单纯的JSP页面开发模式 通过在JSP中的脚本标记,直接在JSP页面中实现各种功能.称为"单纯的JSP页面编程模式&q ...

  6. ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...

  7. 第七章 确保Web安全的HTTPS

    第七章 确保Web安全的HTTPS 使用HTTPS通信机制可以有效防止信息窃听或身份伪装等安全问题. 1.HTTP缺点 [通信使用明文(不加密)]:内容容易被窃听. 加密处理防止被窃听.根据加密的对象 ...

  8. 第七章、Ajango自带auth模块

    目录 第七章.Ajango自带auth模块 一.什么是auth auth是django自带的用户认证模块 二.auth模块的常用方法 三.拓展默认的auth_user表 第七章.Ajango自带aut ...

  9. [ABP教程]第七章 作者:数据库集成

    Web开发教程7 作者:数据库集成 关于此教程 在这个教程系列中,你将要构建一个基于ABP框架的应用程序 Acme.BookStore.这个应用程序被用于甘丽图书页面机器作者.它将用以下开发技术: E ...

随机推荐

  1. DLL分类

    使用def文件简化dll导出 VS查看DLL接口

  2. HTTP协议状态码

    如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通过浏览器访问您的网页或在检测工具抓取该网页时),那么,您的服务器会返回 HTTP 状态代码以响应该请求. 一些常见的状态代码为: ...

  3. A class for global logging

    Some time we need to record the logging information in multiple module, however if we use the follow ...

  4. xml in hadoop ETL with pig summary

    项目中需要把source为xml的文件通过flume放置到hdfs,然后通过MR导入到vertica中去,我之前做过简单的 尝试,是通过pig的piggybank的xmlloader然后Regex_e ...

  5. [转]Responsive Tables Demo

    本文转自:http://elvery.net/demo/responsive-tables/ A quick and dirty look at some techniques for designi ...

  6. [转]jQuery插件实现模拟alert和confirm

    本文转自:http://www.jb51.net/article/54577.htm (function () { $.MsgBox = { Alert: function (title, msg) ...

  7. 渐进记号 Asymptotic Notations-------geeksforgeeks 翻译

    我们已经简单的讨论了下渐进分析以及最坏,平均和最佳情况的分析.渐进分析的主要思想是分析算法的效率,不用依靠计算机的具体快慢,不需要实现这个算法,也不需要真正去计算时间.渐进记号是一种数学的工具来表示渐 ...

  8. NGUI3.x Button事件

    代码调用事件 UI搭建 1.首先创建一个Button,和一个的GameObeject命名为GUIClikEvent 2.方法一:创建一个NGUIClickTest.cs,绑定在Button上 Clic ...

  9. Vector3.Dot 判断方位

    判断方位 假设空间中有这几个坐标,判断一个物体在另一个物体的左边还是右边,前后还是后面 物体空间图 假如以C为中心,判断L是在它的左边还是右边 判断方法 using UnityEngine; usin ...

  10. action中result没有值

    action中result没有值,访问action会输出action中的所有数据,输出类型为.action类型 .