Swift创建一个选择题库界面(解决TableViewCell中Button的selected状态混乱和手势事件被截拦问题)-1
Swift创建一个选择题库界面(解决TableViewCell中Button的selected状态混乱和手势事件被截拦问题)-2
Swift创建一个选择题库界面(解决TableViewCell中Button的selected状态混乱和手势事件被截拦问题)-3
首先来看一下整个界面的最终效果图,共实现了以下几个功能:
- 1.有单选和多选两种体型(但是只能是ABCD4个选项 )
- 2.单选只能选中一个选项,多选可以选择多个选项
- 3.需要统计结果,按提交按钮后给出答对的题数和正确率
下面开始一步一步来实现:
**第一步:创建一个Model,名为Exercise **
代码如下:
class Exercise: NSObject {
var index:NSNumber!//题号
var title:String!//题干
var type:String!//类型(单选或多选)
var options:NSArray?//选项
var answer:String?//答案
init(dict:NSDictionary) {
self.index = dict["index"] as! NSNumber
self.title = dict["title"] as! String
self.type = dict["type"] as! String
self.options = dict["options"] as? NSArray
self.answer = dict["answer"] as? String
}
}```
我们把题库存储在一个plist文件中,名为testLibraryList.plist,层次如下:根选项(root)-dictionary,单选或多选-array,某一题(item)-dictionary。这样如果要创建一个Exercise对象,就可以用init(dict:某一题-dictionary)。plist如下图:
![](http:https://img.haomeiwen.com/i1804014/9ecb3592f3a7b7ba.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**第二步:创建Storyboard,在Main.storyboard中拖入TableViewController **
布局如下:首先拖入一个View作为背景,然后就是题目(UILabel),每一个选项都由一个UIButton和一个UILabel,之所以这样是如果只有一个button来做选项的话,如果选项过长,就会显示不全,如果只用一个label,就无法看到是哪个选项被选中了。要自适应tableView的话就要用自适应布局添加约束(觉得怎么好看怎么弄,我的是每一个选项的button和label都是centerY对齐)。
布局的时候需要注意以下几点:1.每个button的selected和default的图片都要设置;2.所有的Label行数都为0;3.题目label的颜色为黑色,大小为17;4.选项label的颜色为灰色,大小为17;5.背景View的背景颜色为轻灰色。
![](http:https://img.haomeiwen.com/i1804014/8ea069529bb2e461.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
选中cell,并将indentifier改为XXWDCell
![](http:https://img.haomeiwen.com/i1804014/f9d52aa26e8e2e76.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
为VC添加NavigationController,选中VC,在菜单栏中Editor->Embed in->NavigationController
待续.....
网友评论