IOS-笔记14(UITextField,UITableView)
2015-08-24 19:47
471 查看
UITextField
这是用户可编辑的文本域,通过给它发送.becomeFirstResponder可以自动唤出键盘。发送.resignFirstResponder使键盘回去。
他的最重要的代理方法是textFieldShouldReturn(sender: UITextField)。它决定当按下return键后执行的操作,一般首先要进行的操作就是让键盘回去。
还有一些属性,比如是否大写之类的,这些就查文档吧。
UITableView
这是一个1维表格,table header,(section header,section,section footer),table footer,在每个section里就是table cell了。
对每一个table cell有4种样式,subtitle,basic,right detail,left detail。当然也可以自定义。
表格可以是动态的,也可以是静态的,静态的表格更像是起区域分割的作用,每一个cell里你可以继续放置其他类型的控件。动态的你只需要创建一个模板。
对于自定义的cell,你不可能每一行的控件都拖到代码里去创建outlet。这时你需要创建一个UITableViewCell的子类。
tableView里delegate负责控制列表的显示,dataSource负责提供数据并显示在每个cell里。
如果你不在代码里设置行高,系统会自动使用StoryBoard里的高度。如果你设置了rowHeight = UITableViewAutomaticDimension,则行高自动适应。在这种情况下你还需要设置estimatedRowHeight。
UITableViewController自动将自己设置为UITableView的dataSource和delegate。
dataSource:
当你的表格是动态的时候,你需要实现数据源的协议,包括三个方法:有多少个sections,每个section里有几行,每个cell的样式是什么。这个样式必须是个UITableViewCell或者你自己创建的他的子类。对于section,你可以不实现这个方法,默认值为1。对于row,没有默认值,必须实现这个方法。
当点击一个行时也许你想转到另外一个场景,这时你需要使用segue,但你并不知道你点击的是那一行。这时你就需要使用prepareForSegue的sender参数,它爸你点击的这个cell也传了进来。调用.indexPathForCell(cell)方法即可获得它的索引,通过这个索引再获得他的数据,来创建你想转换到的View。
delegate:
这个协议通常用于决定如何显示表格。当表格某一行被选中时,它会调用tableView(UITableview,didSelectRowAtIndexPath: NSIndexPath)。当然你可以使用上面提到的segue。在每一个Cell里你可以添加一个叫Detail Disclosure的小图标,点击时delegate也有一个对应的方法,和上面一样,参数不一样。同样你也可以使用segue。
当你的全部数据需要更新时,调用reloadData()方法。部分数据需要更新时则调用reloadRowsAtIndexPaths()。
delegate也可以控制行高,还是tableView方法。
UILable的显示行数如果设置成0,那就是自适应多少行。
如果你需要下拉刷新列表,那么在StoryBoard里选择tableViewController,打开refresh。这时在文档结构里就会出现refresh control,拖到代码里写函数即可。
这是用户可编辑的文本域,通过给它发送.becomeFirstResponder可以自动唤出键盘。发送.resignFirstResponder使键盘回去。
他的最重要的代理方法是textFieldShouldReturn(sender: UITextField)。它决定当按下return键后执行的操作,一般首先要进行的操作就是让键盘回去。
还有一些属性,比如是否大写之类的,这些就查文档吧。
UITableView
这是一个1维表格,table header,(section header,section,section footer),table footer,在每个section里就是table cell了。
对每一个table cell有4种样式,subtitle,basic,right detail,left detail。当然也可以自定义。
表格可以是动态的,也可以是静态的,静态的表格更像是起区域分割的作用,每一个cell里你可以继续放置其他类型的控件。动态的你只需要创建一个模板。
对于自定义的cell,你不可能每一行的控件都拖到代码里去创建outlet。这时你需要创建一个UITableViewCell的子类。
tableView里delegate负责控制列表的显示,dataSource负责提供数据并显示在每个cell里。
如果你不在代码里设置行高,系统会自动使用StoryBoard里的高度。如果你设置了rowHeight = UITableViewAutomaticDimension,则行高自动适应。在这种情况下你还需要设置estimatedRowHeight。
<span style="white-space:pre"> </span>tableView.estimatedRowHeight = tableView.rowHeight tableView.rowHeight = UITableViewAutomaticDimension
UITableViewController自动将自己设置为UITableView的dataSource和delegate。
dataSource:
当你的表格是动态的时候,你需要实现数据源的协议,包括三个方法:有多少个sections,每个section里有几行,每个cell的样式是什么。这个样式必须是个UITableViewCell或者你自己创建的他的子类。对于section,你可以不实现这个方法,默认值为1。对于row,没有默认值,必须实现这个方法。
override func numberOfSectionsInTableView(tableView: UITableView) -> Int { return tweets.count } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return tweets[section].count } //这里使用的是默认的Cell样式,直接复写它给的方法就好 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("Tweet", forIndexPath: indexPath) as! UITableViewCell // Configure the cell... let tweet = tweets[indexPath.section][indexPath.row] cell.textLabel?.text = tweet.userText cell.detailTextLabel?.text = tweet.userName return cell }对于每个section的header和footer你需要使用方法tableView(UITableView, titleFor{Header or Footer}InSection: Int) -> String来设置,如果字符串不能满足你,那就使用delegate提供一个UIView
当点击一个行时也许你想转到另外一个场景,这时你需要使用segue,但你并不知道你点击的是那一行。这时你就需要使用prepareForSegue的sender参数,它爸你点击的这个cell也传了进来。调用.indexPathForCell(cell)方法即可获得它的索引,通过这个索引再获得他的数据,来创建你想转换到的View。
delegate:
这个协议通常用于决定如何显示表格。当表格某一行被选中时,它会调用tableView(UITableview,didSelectRowAtIndexPath: NSIndexPath)。当然你可以使用上面提到的segue。在每一个Cell里你可以添加一个叫Detail Disclosure的小图标,点击时delegate也有一个对应的方法,和上面一样,参数不一样。同样你也可以使用segue。
当你的全部数据需要更新时,调用reloadData()方法。部分数据需要更新时则调用reloadRowsAtIndexPaths()。
delegate也可以控制行高,还是tableView方法。
UILable的显示行数如果设置成0,那就是自适应多少行。
如果你需要下拉刷新列表,那么在StoryBoard里选择tableViewController,打开refresh。这时在文档结构里就会出现refresh control,拖到代码里写函数即可。
相关文章推荐
- HDU 5400(Arithmetic Sequence-暴力找区间)
- UIScrollView添加控件,控件距离顶部始终有间距的问题
- 5 Techniques To Understand Machine Learning Algorithms Without the Background in Mathematics
- IOS第12天(3,UIViewController的生命周期)
- IOS UITextView自适应高度
- IOS UITextView自适应高度
- IOS第12天(2,UINavigationController导航控制器)
- uuid生成12位随机数 不重复
- UIAlert的使用
- STL学习----入门(1)[queue]
- 野人学Android基础篇之初探UI控件第一课--TextView静态赋值
- The Dole Queue(UVA 133)
- IOS第12天(1,UIViewController控制器的创建的 三种方式,和第一个view创建)
- 百度编辑器ueditor简单易用
- UI19_数据库
- iOS开发UI篇—CAlayer层的属性
- 如何自己编译apue.3e中代码 & 学习写makefile
- android stuido插件
- 【POJ 2031】 Building a Space Station (三维坐标求距离+最小生成树)
- IOS-6-UI知识总结-1(代码添加控件、视图切换、多种传值方式)