swift UI专项训练15 PcikerView老虎机视图

老虎机相信大家都知道,像一组滚轴,而我们选中其中的某一组值。ios的闹钟选择时间的时候就是这么设计的。在storyboard中拖拽一个pickerview,显示如下:

pickerView是没法选择默认值的,图中的几个字符都是和苹果相关的地名,如要设置我们只能去代码中设置。我们来做一个有三个部分的老虎机,每一部分下面有一个标签,来显示选中的内容。分别拖拽到控制器中建立联系:

然后回到storyboard中,选中pickerview,把右侧的outlets与viewcontroller连接起来:

那么数据从哪来呢,我们回到代码中,首先依旧需要手动把继承的协议加上:

class ViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate 

加上之后你会发现会报错,那是因为你光继承却没有实现它的回调方法,就像tableView一样,如果控制器继承了数据源,那么就必须实现那些规定行数等等的方法。

先来定义一个显示内容的数组:

let citys = ["北京","上海","广州"]

然后定义回调方法:

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return citys.count
    }

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return citys.count
    }

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
        return citys[row]
    }

分别代表有三个部分,每个部分三行,每行的标题。运行效果如下:

现在我们来加上标签的现实功能,让它们显示我们在老虎机中选择的城市:

 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        switch component{
        case 0: label0.text = citys[row]
        case 1: label1.text = citys[row]
        default:label2.text = citys[row]
        }
    }//选择了哪一行哪一部分

效果如图:

时间: 2024-08-03 18:51:54

swift UI专项训练15 PcikerView老虎机视图的相关文章

swift UI专项训练28 DatePicker日期老虎机

如果你设置过iPhone中的日期,那么你对日期老虎机一定不陌生.它的基类是UIDatePicker.主要属性有日期.时间和倒计时,如图: mode模式中你可以选择只有日期.只有时间或者都有. local是时区. Interval是时间间隔. 后面的是一些约束. Timer是倒计时间隔. 拖一个到storyboard中,运行一下看看效果: 还是满炫酷的.现在我们把它的样式设为倒计时,cut down timer: 可以看到倒计时样式是没有我们常用的秒或者毫秒倒计时的,需要我们继承基类自己定义.

swift UI专项训练5 定制视图控制器

我们现在已经添加了两个场景了,尽管我们有默认的视图控制器,但是我们还是想自己定制一下自己的控制器,我们之前一直在storyboard上做操作,现在来些一些代码. 在工程目录中右键选择new fie,在IOS的Source中选择Cocoa Touch Class,设置如下图: 点击Next,可以看到xcode给我们创建了一个继承了UIViewController的类: 选中新增餐馆的viewcontroller,然后在右边选中类编辑器,custom class中选择我们自己的类,选中后现在变成我们

swift UI专项训练10 视图共性

讲到视图,先来看看视图的内容: 1.视图的实现:视图的基类是UIView 2.视图的Mode:尺寸填充模式,就是当尺寸超过了我们设定的值的时候采取什么适合屏幕的填充方式. 3.Tag:标记序号 视图的行为: 主要有互动和绘图,互动是指用户的一些操作,可以通过勾选选择是否采用互动和多点触控. 绘图包括:透明度.可见.清除图像内容.截断子视图边界.子视图自动尺寸. 试图外观:Alpha是透明度,取值是从0到1的: 修改视图外观的代理方法:修改所有使用appearance方法,如果需要修改某个固定的用

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

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

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专项训练7 数据添加

上一话我们使用了自己定义的控制器之后发现tableview上的餐馆没有了,这一话我们来添加数据,新添加一个餐馆类,这个类我们不需要继承系统的类,直接添加一个swift文件就好 import Foundation class Restaurant { var name = "" var location = "" var score = 10 } 我简单建一个类,分别代表餐馆名字.餐馆位置和餐馆评分,它们都有默认值. 然后我们回到餐馆排行的控制器中新建一个餐馆的数组.

swift UI专项训练26 控件综述

控件和视图一样,都是与用户交互的,什么是控件呢?我们常用的滑块.开关等都是控件.控件的基类都是UIControl.控件的内容如下: 主要有选中.可以使用和高亮.我们用一个按钮来展示: 未选中状态: 白底蓝字,现在我们勾选Selected: 选中之后变成了蓝底白字,翻转了,这也符合我们日常的使用习惯. 如果选中了高亮的话,颜色会变浅发灰: 空间支持各种交互事件,比如手势.触摸.拖动等等.都在类UIControlEvents中.控件的目标-操作机制,原理是一个控件在一个与之相关的事件发生之后,向另一