UITableView---IOS开发的常用控件使用总结

UITableView是IOS中非常常见的一个控件,主要用来进行列表内容的展示.有两个默认的内置风格: UITableViewStylePlain和UITableViewStyleGrouped.其中UITableViewStyleGrouped允许将列表中的内容进行分组.UITableViewController是专用于UITableView的视图控制器,提供了一系列的方法来对UITableView进行创建和维护.

UITableViewController必须继承两个协议:

1, 通过UITableViewDataSource向UITableView提供数据,向每一个单元格cell进行内容的填充.

2, 通过UITableViewDelegate来处理对于每一个单元格cell的选择事件(如点击选取等).

常见的注意事项大概如下:

1, 新建UITableViewController子类,并使其继承UITableViewDataSource和UITableViewDelegate协议.

2, 通过storyboard创建UITableView,并将其dataSource和delegate都指向该UITableViewController对象

(storyboard中右键点击UITableView对象,选取并连线即可).

3, 对该UITableView,必须要重写至少两个方法,

func tableView(table: UITableView, numberOfRowsInSection section: Int) -> Int {   }

该方法返回tableView中呈现的单元格个数,如return self.products.count

func tableView(table: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell = UITableViewCell(style: UITableViewCellStyle.SubTitle, reuseIdentifier: "myCell")

cell.textLabel.text = self.products[indexPath.row][‘title‘] as? String

return cell

}

该方法用于描述每一个单元格cell的样式及其中填充的数据,然后返回该cell.

每一个cell的基本样式可以通过Identifier来预先设置,如Basic, Subtitle等基本类型, 也可以设置自定义类型myCell.

let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Basic", forIndexPath: indexPath) as UITableViewCell

该方法从tableView的单元格队列中取出一个cell进行重用.

4, 除了以上两个必须重写的方法之外,设置选取每个cell对应的执行操作,可以通过以下方法,

func tableView(tableView: UITableView, didSelectRowAtIndex indexPath: NSIndexPath!) { self.didChooseItem(indexPath.row) }

该方法专用于选取cell时执行的操作.

func tableView(tableView: UITableView!, willDisplayCell cell: UITableViewCell!, forRowAtIndexPath indexPath: NSIndexPath!) { }

该方法是在呈现选取该cell时执行的操作,如显示一个警告或者动画.

5, delegate的用法.

delegate的思想其实很有意思,一个对象做不到的行为,可以给其设置一个代理对象,而代理对象可以代替其完成该行为.

在UITableView中的使用非常常见.比如从网络中获取数据来填充tableView,我们可以将获取网络数据的操作onRequest封装在一个HttpController的类中.则获取的数据是跟HttpController的对象绑定在一起的.而我们希望可以直接拿来传递给tableViewController,而不用通过HttpController对象将数据传递给tableViewController.

首先,在HttpController中定义一个协议,

protocol HttpProtocol {

func parseResults(results: NSDictionary)

}

然后,将tableViewController类继承该HttpProtocol协议,并定义parseResults(results: NSDictionary)的函数体.

接下来,在tableViewController中定义一个HttpController对象,并指定该httpCtl的delegate对象就是该tableViewController自身.

var httpCtl: HttpController = HttpController()

httpCtl.delegate = self

// 这一步对应的是 HttpController类中要定义一个属性 var delegate: HttpProtocol?

httpCtl.onRequest("www.dianping.com")

那么,delegate发生作用的过程为,httpController的对象httpCtl调用onRequest方法,onRequest方法中获取到网络数据的原始值,需要调用parseResults方法进行数据解析.而parseResults的函数体是在tableViewController中定义的.则最终过程未,在httpCtl.onRequest中使用self.delegate?.parseResults(jsonResult)即可对网络数据进行解析.同时,解析的数据在parseResults函数体中即可直接传递给tableViewController(传递过程即为,直接赋值给tableViewController的属性如products数组即可).

以上,就是delegate发生作用的基本过程.描述不清楚的地方,欢迎各位同学一起来探讨.

其实,不采用delegate的方式也可以实现上述功能,即将parseResults函数体直接定义为HttpController自身的方法,则获取网络数据和解析网络数据都在HttpController中完成.最后通过segue等方式将数据从HttpController中传递给tableViewController即可.但涉及到更加复杂的数据传递或者操作,还是推荐使用delegate的思想来实现.

那么,关于UITableView的基本用法就写到这里了,如有不准确的地方,欢迎指正.

时间: 2024-10-11 18:07:03

UITableView---IOS开发的常用控件使用总结的相关文章

IOS开发基础常用控件简介

在IOS开发中,各类控件完美的解决了开发过程中界面与交互展现的问题,使得IOS产品界面更加灵活实用,IOS常用控件的介绍如下. 1.窗口 UIWindow iPhone的规则是一个窗口,多个视图,窗口是你在app显示出来你看到的最底层,他是固定不变的,基本上可以不怎么理会,但要知道每层是怎样的架构. 2.视图 UIView, 是用户构建界面的基础,所有的控件都是在这个页面上画出来的,你可以把它当成是一个画布,你可以通过UIView增加控件,并利用控件和用户进行交互和传递数据. 窗口和视图是最基本

iOS开发 - 最常用控件 UITableView详解

UITableView掌握点 设置UITableView的dataSource.delegate UITableView多组数据和单组数据的展示 UITableViewCell的常见属性 UITableView的性能优化(cell的循环利用) 自定义Cell 如何展示数据 UITableView需要一个数据源(dataSource)来显示数据 UITableView会向数据源查询一共有多少行数据以及每一行显示什么数据等 没有设置数据源的UITableView只是个空壳 凡是遵守UITableVi

IOS开发自定义CheckBox控件

IOS本身没有系统的CheckBox组件,但是实际开发中会经常用到,所以专门写了一个CheckBox控件,直接上代码 效果图: UICheckBoxButton.h文件如下: #import #import "Common.h" @interface UICheckBoxButton : UIControl { UILabel *label; UIImageView *icon; BOOL checked; id delegate; } @property (retain, nonat

[IOS_UI控件] IOS代码实现常用控件UIButton、UISlider、UISwitch、UISegmentedControl

IOS中最常用到的控件UIButton.UISlider.UISwitch.UISegmentedControl通过Xib文件拖动生成非常简单,其实用代码实现也是一样的简单,当然,用代码实现能够掌握到更多的东西. 上图中包涵提到的4种控件,UIButton按钮.UISlider滑块.UISwitch开关.UISegmentedControl分类 首先创建一个名为CodeControls的Empty Application项目 AppDelegate.h和AppDelegate.m文件中和IOS代

iOS学习-其他常用控件

1 // 2 // ViewController.m 3 // 其他常用控件 4 // 5 // Created by 大欢 on 16/1/25. 6 // Copyright © 2016年 bjsxt. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface ViewController () 12 13 @property (weak, nonatomic) IBOutlet UILab

iOS开发中UIDatePicker控件的使用方法简介

iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. 您可以选择自己需要的模式,Time, Date,Date and Time  , Count Down Timer四种模式. 本篇文章简单介绍下PickerDate控件的使用1.新建一个Singe View Application,命名为DatePickDemo,其他设置如图 2.放置控件打开ViewController.xib,拖拽一个DatePicker控件放到界面上,再拖拽一个Button控件放到界面上,双

iOS 开发 ZFUI framework控件,使布局更简单

来自:http://www.jianshu.com/p/bcf86b170d9c 前言 为什么会写这个?因为在iOS开发中,界面的布局一直没有Android布局有那么多的方法和优势,我个人开发都是纯代码,Masonry这个框架我在开发中也是不用的,一个是代码布局的时候,代码量比较多,另外好像在iOS10 布局有问题,网上也有些解决的方法了. 所以就想能自定义一些UI控件,使布局更加简单 实现思路 可以像Android的wrap_content一样,是UILabel 可以根据内容来展示控件的宽高

iOS开发导航栏控件的作用

一,在iOS开发过程中针对一些导航栏上需要自定义视图的情况,有时候需要用系统自带的处理,有些时候需要自定义一些视图并把视图添加上去,这时候主要是它们的位置有些许差别,下面简单写下demo: 1,用导航栏系统自带的视图处理: 1 //1 中间的图片 2 UIImageView *imageBarView = [[UIImageView alloc] initWithFrame:CGRectMake(kScreenWidth / 2.f - 40.f, 20.f, 80, 30)]; 3 image

iOS开发UI—UIScrollView控件

一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕?大?小是极其有限的,因此直接展?示在?用户眼前的内容也相当有限 (2)当展?示的内容较多,超出?一个屏幕时,?用户可通过滚动?手势来查看屏幕以外的内容 (3)普通的UIView不具备滚动功能,不能显?示过多的内容 (4)UIScrollView是一个能够滚动的视图控件,可以?用来展?示?大量的内容,并且可以通过滚 动查看所有的内容 (5)  举例:手机上的“设置”.其他?示例程序 2.UIScrollView的简