Swift实现自定义TableViewCell

虽然SDK里面自带的TableViewCell功能已经算强大了,但是很多时候,我们还是需要自定义的Cell来满足我们自己的需求。最近研究了下如何用Swift实现自定义的TableViewCell,记录一下吧。

1.

点击左下角的加号,添加新的类

XCode6.3 做了一些小改动,整合了一下,点击File,然后进行下一步:

2.

这里可以给你自己的TableViewCell修改名字,记得把"Also create XIB file"前面的复选框选中

3.

设计你自己想要的XIB样式。AutoLayout很强大,多用一用就慢慢熟练了,可以省去很多代码量。

StationTableViewCell.swift文件基本不需要做大的变动

下面进行关键的步骤,在TableView中添加进刚才我们自定义的TableViewCell

4.

StoryBoard中我们设置好承载TableView的ViewController(ProjectDetail...Controller.swift)的各项属性

注意这里把tableview的style设置为Grouped,这样会在顶部出现一段空白,不过别担心,在接下来的代码里面我们会解决这个问题。

5.

ViewDidLoad:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        appdelegate.projectDetail = self
        self.tableView.delegate = self
        self.tableView.dataSource = self
        // remove the blank of the header of the table view, mind the height must be more than 0
        self.tableView.tableHeaderView = UIView(frame: CGRectMake(0, 0, self.tableView.frame.size.width, 0.01))
        // register the custom tableview cell
        var nib = UINib(nibName: "StationTableViewCell", bundle: nil)
        self.tableView.registerNib(nib, forCellReuseIdentifier: "cell")
    }

为了在Cell里面点击button可以实现页面的跳转,我在界面刚初始化的时候,在AppDelegate里面实例化了一个当前ViewController的实例。如果对这个过程不了的,可以参见我的下一篇Blog,我会详细介绍一下如何实现。

接下来设置tableview的delegatedatasource代理

然后就是刚才提到的,去除顶部的空白的代码了:

        self.tableView.tableHeaderView = UIView(frame: CGRectMake(0, 0, self.tableView.frame.size.width, 0.01))

注意这里frame的height不能是0,如果是0是没有效果的,必须是比0大一点,但是我们把这个值设置的特别小,用肉眼看不出来,所以就变相达到了去除顶部空白的作用。所以我们设置成了0.01

接下来就是最关键的步骤了,初始化自定义的cell

        var nib = UINib(nibName: "StationTableViewCell", bundle: nil)
        self.tableView.registerNib(nib, forCellReuseIdentifier: "cell")

6.

实现两个代理方法

    // #MARK: tableview delegate
    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 80
    }

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        // To do
    }

    // #MARK: tableview datasource
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // all the custom cell into the tableview
        var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! StationTableViewCell
        return cell
    }

这几个代理方法就不多说了,很常用的。

到这里所有的步骤都完成了,运行一下程序,看看自定义的是什么样子的吧。

时间: 2024-10-07 23:17:25

Swift实现自定义TableViewCell的相关文章

[爱上Swift] day 6:在TableView中加载自定义TableViewCell

前言 TableView可以帮助我们现实通用的列表样式,如这样: 但是我们有时有需要一些更具定制化的Cell,比如: 也就是说我们会在Cell中布局一些空间,更丰富的显示我们的信息. 让代码飞一会儿 首先我们自定义一个Swift class继承TableViewCell: import UIKit class CustomOneCell: UITableViewCell { @IBOutlet weak var middleLabel: UILabel! @IBOutlet weak var l

用UISlider控制自定义tableViewCell中字体的大小

字体随滑杆的滑动而变大或变小.用滑杆去控制字体的大小很简单,但用字体去控制自定义tableViewcell内字体的大小也很简单,只不过第一次做的时候可能要摸索一下,这里我就简单的给大家演示一下: 这是一个按钮,点击按钮弹出一个带有slider的view - (IBAction)btnClick:(id)sender { UIView *sliderView = [[UIView alloc]initWithFrame:CGRectMake(self.view.frame.size.width-1

自定义TableViewCell 的方式实现自定义TableView(带源码)

转载于:http://www.cnblogs.com/macroxu-1982/archive/2012/08/30/2664121.html 实现的效果 实现过程 Step One 创建 自定义TableViewCell (接口部分)  (类实现部分)  xib 实现部分 注意: 下面三个设置 1 设置xib文件的class 2设置Identifier 3 设置文本框和类的关联   Step Two 实现TableView   源码下载:tablebyselfcell.zip

ios 自定义tableViewcell,UITableViewCell

//自定义tableViewcell,当系统自带的tableView样式无法满足我们的需求可通过代码实现自定义cell demo效果看附件 #import <UIKit/UIKit.h> #import "Houses.h" #define kRowWidth [UIScreen mainScreen].bounds.size.width #define kRowHeight 90 @interface HouseTableViewCell : UITableViewCel

自定义TableViewCell

BookStoreCell.h #import <UIKit/UIKit.h> @interface BookStoreCell : UITableViewCell @property (strong, nonatomic) UIImageView *bookImageView; @property (strong, nonatomic) UILabel *nameLabel; @property (strong, nonatomic) UILabel *authorLabel; @prope

Swift Tips - 在 Swift 中自定义下标访问

Untitled Document.md input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.form-horizontal

自定义tableViewCell的侧滑删除按钮

有时候客户会有一些特殊的要求,更改tableViewCell的侧滑删除按钮的样子就是其中之一,就像这样: 这个效果其实也不难,只需在自定义的cell里重写layoutSubviews方法就好,具体代码如下: //修改删除模式的样式 -(void)layoutSubviews { [super layoutSubviews]; for (UIView *subView in self.subviews) { if([subView isKindOfClass:NSClassFromString(@

Swift中自定义打印方法

// 1.获取打印所在的文件 let file = ( #file as NSString).lastPathComponent // 2.获取打印所在的方法 let funcName = #function // 3.获取打印所在的行数 let line = #line Swift自定义的打印方法:

使用Swift语言自定义Pull To Refresh控件

CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用.开发工具.移动游戏及引擎.智能硬件.物联网等方方面面.如果您想投稿.参与内容翻译工作 全世界有非常多的应用程序.要开发出新的应用,并且能够吸引用户的注意力,使应用能够脱颖而出.毫无疑问,有人会说使简单应用出类拔萃的秘笈是开发小组(开发人员和设计人员)所使用的个性化技艺,用在大多数开发人员不做处理的小细节处.其中之一就是从本文题目中可见一斑的pull-to-refresh控件.通过本文我会展示使该控件改头换