`

IOS之表视图UITableView自定义单元格

 
阅读更多

        下面是我们即将要实现的效果。表视图的单元格是自定义的,单击其中的项目,弹出警告框。


  

        1.在Interface Builder,将UITableView添加到ViewController,绑定delegate和datasource到ViewController。

        2.在Interface Builder,将UITableViewCell添加到UITableView,再往UITableViewCell添加自定义控件,包括一个UIImageView和UILabel。

        小提醒:在命名Label和Image时,不要将Label命名为textLabel,或者将Image命名为imageView,因为textLabel和imageView属于UITableViewCell定义的变量,而我们现在要实现的是自定义单元格,要避免因为命名冲突而出现混乱。



 3.新建一个类MyTableViewCell,继承UITableViewCell。同时打开storyboard和MyTableViewCell.h,按住Control键,将上图的Label拖动到MyTableViewCell.h,按照下图,将其命名为label。同理操作Image,将其命名为image。完成后MyTableViewCell.h生成如下的代码。



 

 

#import <UIKit/UIKit.h>

@interface MyTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *image;
@property (weak, nonatomic) IBOutlet UILabel *label;

@end

 4.在Interface Builder中选中UITableViewCell,将class设置为MyTableViewCell。将identifier设置成myTableCell(在第6步的设置单元格方法中用到)。

 5.添加对UITableView的数据源初始化。图片和user_head.plist文件请见附件。

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self initTableViewData];
	// Do any additional setup after loading the view.
}

-(void)initTableViewData{
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *plistPath = [bundle pathForResource:@"user_head" ofType:@"plist"];
    dataArr = [[NSArray alloc] initWithContentsOfFile:plistPath];//dataArr为头文件定义的变量
    NSLog(@"table data count = %d",[dataArr count]);
}

 6.将数据源绑定到UITableView。

//列表的单元数目
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [dataArr count];
}
//设置单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"myTableCell";
    MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];//设置identifier为"myTableCell"
    
    NSUInteger row = [indexPath row];
    NSDictionary *rowDict = [dataArr objectAtIndex:row];
    cell.label.text =  [rowDict objectForKey:@"itemName"];
    
    NSString *imagePath = [rowDict objectForKey:@"itemImagePath"];
    cell.image.image = [UIImage imageNamed:imagePath];
    
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    
    return cell;
}

 7.相应单击事件。

//选中Cell响应事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失
    NSUInteger row = [indexPath row];
    NSDictionary *rowDict = [dataArr objectAtIndex:row];
    NSString *userName =  [rowDict objectForKey:@"itemName"];
    [self showDialog:@"userName" message:userName];
}

- (void)showDialog:(NSString *)title message:(NSString *)message{
    UIAlertView *alert = [[UIAlertView  alloc]
                                        initWithTitle:title
                                        message:message
                                        delegate:nil
                                        cancelButtonTitle:@"OK"
                                        otherButtonTitles:nil];
    [alert show];
}

 

 

 

  • 大小: 31 KB
  • 大小: 82 KB
  • 大小: 36.1 KB
  • 大小: 219.3 KB
分享到:
评论

相关推荐

    【一步一步学IOS5 】 定制UITableView表视图单元格

    NULL 博文链接:https://alan-hjkl.iteye.com/blog/1677016

    iOS开发之表视图详解

    表视图是iOS开发中最重要的视图,它以列表的形式展示数据。表视图又一下部分组成: 表头视图:表视图最上边的视图 表脚视图:表视图最下边的视图 单元格(cell):表视图中每一行的视图 节(section):由多个单元格...

    SwiftReorder:轻松的UITableView拖放单元格重新排序

    SwiftReorder是一个UITableView扩展,可让您将长按拖放重新排序添加到任何表视图中。 它功能强大,轻巧且可完全自定义。 特征 流畅的动画 自动边缘滚动 适用于多个表节 可自定义的阴影,缩放和透明效果 安装 可可豆...

    static-cells-uitableview-in-uiviewcontroller:在iOS的UIViewController内将静态单元格添加到UITableView

    在UIViewController内的UITableView中添加静态单元格。什么? 如果UITableView不在UITableViewController内,则不允许将UITableView的单元格设置为静态单元格,因此,不允许在UIViewController内使用Static-Cells ...

    MKSlidingTableViewCell:具有可自定义“抽屉”的iOS 7样式滑动表视图单元

    MKSlidingTableViewCell iOS 7样式的滑动表视图单元格。 通过在表格视图中使用MKSlidingTableViewCell,可以将任何视图设置为“抽屉”视图,然后设置显示量以指定拖动时滚动视图将粘贴的位置。 由于...

    一步一步学习ios5编程

    第四部分:定制UITableView表视图单元格 第五部分:如何处理UITableView中的行选择 第六部分:应用Property List强化你的Simple Table应用程序 第七部分:如何在Xcode 4.* 添加定制字体到iOS 应用程序中? 第八部分...

    IOS编程入门-精品教程

    第四部分:定制UITableView表视图单元格 第五部分:如何处理UITableView中的行选择 第六部分:应用Property List强化你的Simple Table应用程序 第七部分:如何在Xcode 4.* 添加定制字体到iOS 应用程序中? 第八部分...

    掌上汇.zip

    完整,工程下载可运行: 内容包括: 自定义单元格,导航视图页面切换,带索引的UITableView,单元格左右滑动动画实现,访问雅虎财经URL地址获取实时货币汇率,进行切换等。

    一步一步学习IOS6

    第四部分:定制UITableView表视图单元格 第五部分:如何处理UITableView中的行选择 第六部分:应用Property List强化你的Simple Table应用程序 第七部分:如何在Xcode 4.* 添加定制字体到iOS 应用程序中? 第八部分...

    一步步学IOS5编程完整版

    第四部分:定制UITableView表视图单元格 第五部分:如何处理UITableView中的行选择 第六部分:应用Property List强化你的Simple Table应用程序 第七部分:如何在Xcode 4.* 添加定制字体到iOS 应用程序中? 第八部分...

    一步一步学习_iOS_6_编程(第四版)

    第四部分:定制UITableView表视图单元格 第五部分:如何处理UITableView中的行选择 第六部分:应用Property List强化你的Simple Table应用程序 第七部分:如何在Xcode 4.* 添加定制字体到iOS 应用程序中? 第八部分...

    ZJYTableViewCell:用Objective-C编写的自定义表格视图单元格

    ZJYTableViewCell 适用于iOS的具有不同自定义样式的表格视图单元格。 ZJYTableViewCellNone ZJYTableViewCellDefault ============ZJYTableViewCellNone 标题行(用于节中的第一个单元格) 页脚行(用于节中的最后一...

    一步一步学习 iOS 6 编程(第四版)

    第四部分:定制 UITableView 表视图单元格 第五部分:如何处理 UITableView 中的行选择 第六部分:应用 Property List 强化你的 Simple Table 应用程序 第七部分:如何在 Xcode 4.* 添加定制字体到 iOS 应用程序中 第八...

    一步一步学习iOS 5编程

    一步一步学习+iOS+5+编程,由EntLib.com团队翻译整理第一部分...第三部分:iOS 编程向导:创建一个简单的表视图(Table View)应用程序 第四部分:定制UITableView表视图单元格第五部分:如何处理UITableView中的行选择

    DCTDataSource:一个更好地管理UITableView数据源类的系统,因为它们也可以重用!

    特征自动处理从笔尖或情节提要中创建的表格视图单元格可以与托管对象上下文和获取请求一起馈入的获取结果数据源,以使表视图保持同步。 拆分器数据源,可用于将多个数据源对象连接在一起表示一个对象的数据源,如果...

Global site tag (gtag.js) - Google Analytics