Swift UI专项训练7 数据添加

上一话我们使用了自己定义的控制器之后发现tableview上的餐馆没有了,这一话我们来添加数据,新添加一个餐馆类,这个类我们不需要继承系统的类,直接添加一个swift文件就好

import Foundation

class Restaurant {
    var name = ""
    var location = ""
    var score = 10

}

我简单建一个类,分别代表餐馆名字、餐馆位置和餐馆评分,它们都有默认值。

然后我们回到餐馆排行的控制器中新建一个餐馆的数组。

var restaurantList = [Restaurant]()

之后添加一个方法来初始化数据。

func loadInitData(){
        let rest1 = Restaurant()
        rest1.name = "蜀渝蜀二"
        restaurantList.append(rest1)

        let rest2 = Restaurant()
        rest2.name = "芳芳餐厅"
        restaurantList.append(rest2)

        let rest3 = Restaurant()
        rest3.name = "阿慧餐厅"
        restaurantList.append(rest3)

        let rest4 = Restaurant()
        rest4.name = "酱府老碗面"
        restaurantList.append(rest4)

        let rest5 = Restaurant()
        rest5.name = "要德平价川菜"
        restaurantList.append(rest5)

        let rest6 = Restaurant()
        rest6.name = "大碗饭"
        restaurantList.append(rest6)
    }

之后在viewDidLoad中调用一下就好了。但是现在我们运行会发现表格中依然空空如也,这是为什么呢?原来是我们并没有使用委托,我们需要把更新的表格内容委托给控制器。由于我们是子代理,所以需要重载控制器的很多方法,这些方法在我们的控制器代码中已经写好了我们只需要按住自己的需求去做修改,比如下面这个方法:

   override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Potentially incomplete method implementation.
        // Return the number of sections.
        return 1
    }

这个方法规定了表格的区块,有的表格比较复杂可能不止一个区域,我们返回1代表只有一个区块。

  override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete method implementation.
        // Return the number of rows in the section.
        return restaurantList.count
    }

上面的方法用来规定表格的行数,我们返回的是数组的元素个数,有很多设置方法名都是tableView,但是参数不同,大家选择自己需要的。通常单元格的每一行的格式都是相同的,所以我们需要设一个默认格式来重用,打开storyboard,选择某一table view cell然后设定Identifier,命名为PCell。底下的Selection是选中样式,有以下几种:

这个是选中后会有什么颜色,我们选择None。回到代码中:

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("PCell", forIndexPath: indexPath) as UITableViewCell

        // Configure the cell...

        return cell
    }

这个方法的作用是重用我们刚才设置的默认格式。现在我们对cell格式和内容的操作都在上面这个方法中进行就好了。增加一行:

cell.textLabel?.text = restaurantList[indexPath.row].name//行数

运行效果:

时间: 2024-08-07 12:31:04

Swift UI专项训练7 数据添加的相关文章

swift UI专项训练9 添加数据

今天我们来实现新增数据的功能.在新增餐馆的控制器中初始化一个类: var restaurant = Restaurant() 接着创建关联,按住control键选择done按钮拖拽到控制器代码中: 会自动生成如下代码: @IBOutlet weak var doneButton: UIBarButtonItem! 同理把文本框也拖过去.回到控制器中有一个方法已经为我们准备好了,现在我们取消它的注释,然后增加代码,如下: override func prepareForSegue(segue: U

swift UI专项训练8 展示数据

现在我想要点击表单中的条目,进行标记,再次点击以取消,那么该如何做呢?依然使用的是tableView的重载方法,在 Restaurant中新增一个isCollected的值表示是否收藏,然后回到RestaurantListViewController中,新增: override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let r1 = restaurantLi

swift UI专项训练25 网址输入完毕事件

首先我们运行一下上一话中写好的程序看看有什么问题. 我们发现点击return是没有反应的,这是因为我们之前设置了文本框为这个界面的第一反应者,我们要得到键盘的返回必须对键盘做一些操作.从textfield入手,添加一个方法: func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true } 这是一个点击返回按钮输入框消失的方法,其中在返回之前我们要

swift UI专项训练39 用Swift实现摇一摇功能

微信的摇一摇功能想必大家都用过,过春节的时候抢红包也没少摇吧,那么用swift语言怎样实现这么酷炫的功能呢.摇动属于IOS内置可识别的一种动作,在你须要实现摇动功能的viewcontroller中.在viewDidLoad方法中增加下面代码: UIApplication.sharedApplication().applicationSupportsShakeToEdit = true self.becomeFirstResponder() 第一句是要求当前页面支持对摇动事件可编辑的支持,设置为t

swift UI专项训练23 设置委托和键盘返回

前几话中我们搞定了布局,这一话我们首先要把引用全部加上,就是连线到控制器中 UIViewController { @IBOutlet weak var textField1: UITextField! @IBOutlet weak var web1: UIWebView! 然后就是代理,首先来看一下我们手机场景界面上的三个按钮: 第一个按钮是控制器本身,第二个按钮是这个界面的第一反应者,我们这个界面的第一反应者是网址这个框,第三个按钮是退出. 我们选择代理的时候也可以通过连线的方式,只需要把de

swift UI专项训练17 SearchBar搜索条

搜索栏算是UI中很简单的一个操作了,拖一个搜索栏上来. 搜索栏中比较重要的属性是占位符,也就是图中右侧的Placeholder,比如输入"请输入关键字",显示如下: 这一项是设置背景颜色: Options选项会对搜索框进行一些调整: 比如我们选择第一项,会显示出一个下拉箭头: 接下来看这部分: 这个里面有一些很有意思的选项,比如这个Keyboard Type,当我们在网页输入的时候要输入汉字和数字,当我们输入电话号码的时候只能输入数字,就是用这个选项. 还有这个Return Key,我

Swift UI专项训练1 交互

我们都知道在IOS界面编程的时候有IBOutlet和IBAction,前者是引用后者是操作,IBAction有一个参数sender,用来指向操作对象,之前我发布的天气预报的小程序那一话可以看到,如果我们需要一个按钮的点击事件的话那就使用IBAction,如果是一个Label要显示东西的话那就用IBOutlet. 现在来讲一下IBAction中的一些事件类型: 1.Touch Down Inside:触碰,只要我们碰到不动就算触发了事件 2.Touch Up  Inside:抬离,和1不同的是,触

swift UI专项训练29 Page Control页控件

有时候我们的页面很大需要滚动只用滚动条滚动可以不太精确,这就需要用到Page Control,就像我们平时操作iphone一样,每一页都有一些APP,页面的个数是用小点标示的,每次一滑动就会切换页面,当前停留的页面的小点会被点亮.比如我们平时用的天气预报,每一页只能显示一个地方的天气,每次换页可以切换到其他城市.Page Control的属性不多,如下: Pages中的两个数字标示有几页,当前在哪一页. Behavior标示当前只有一页的时候可以隐藏,剩下的是颜色的设置. 好的我们来定义一下,现

swift UI专项训练18 ToolBar工具条

工具条是个很重要的内容,什么是工具条呢,它一般显示在屏幕下方,显示一些按钮或者文字,我们可以用系统现成的,也可以用我们自定义的.之前我们讲的都是需要代理模式的,Dlelegate,委托模式.ToolBar属于目标操作,不需要代理.网界面上拖一个Toolbar拖到界面底部. toolbar的元素如下: Style主要是设置样式,比如浅色和黑色的. Bar Tint是设置颜色. Item是工具栏上的按钮,跟导航栏很相似.我们可以选择系统中已有的,比如我们选择done 那么toolbar上的按钮就会变