zoukankan      html  css  js  c++  java
  • iOS 中在一个xib中创建多个cell以及cell上button的点击方法

    在写项目布局的时候会有这么一种情况

    或者

    这种页面 是单一的页面,别的地方也用不到,, 用xib写的话  cell就需要注册好几个。看起来挺多的,实际上有种方法能不用创建那么多的xib。

    那就是在一个xib中创建多个cell

     第一步创建

    第二步  设置identifier

    把每个cell 都设置成 相应的id之后

    在tableView中

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        NSString *identifier = @"";//对应xib中设置的identifier
        NSInteger index = 0; //xib中第几个Cell
        switch (indexPath.row) {
                case 0:
                identifier = @"0";
                index = 0;
                break;
                case 1:
                identifier = @"1";
                index = 1;
                break;
                case 2:
                identifier = @"2";
                index = 2;
                break;
                
            default:
                break;
        }
        
        TestTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
        if (!cell) {
            cell = [[[NSBundle mainBundle] loadNibNamed:@"TestTableViewCell" owner:self options:nil] objectAtIndex:index];
        }
        return cell;
    }
    

     注册 cell 之后运行 没bug之后  xib 创建多个cell就完成了

    ===============================华丽的分割线=======================================

    这个操作完成之后 我们在cell上添加button

    我们想做的操作是  点击cell上的button 把button的title 打印出来。

    其实有好多方法   通过属性添加点击事件 cell.button 或者 通过tag值找到button

    还有一种在控制器里面很省代码的方法

     在TestTableViewCell.h中  写个代理

    #import <UIKit/UIKit.h>
    @protocol TestTableViewCellDelegate <NSObject>
    
    - (void)testBtn:(UIButton*)btn;
    
    @end
    @interface TestTableViewCell : UITableViewCell
    @property (nonatomic, weak)id <TestTableViewCellDelegate> testdelegate;
    
    @end
    

      在TestTableViewCell.m中 加一个判断

    - (IBAction)textButton:(id)sender {
        
        if (self.testdelegate && [self.testdelegate respondsToSelector:@selector(testBtn:)]) {
            [self.testdelegate testBtn:sender];
        }
        
    }
    

     接着在你的controller中 添加代理

      cell.testdelegate = self;
    

     实现方法

    - (void)testBtn:(UIButton *)btn
    {
        NSLog(@"%@", btn.titleLabel.text);
    }
    

     

  • 相关阅读:
    不用第三个变量互换两变量的值的两种方法。
    struts2截取字符串
    js控制表格单双行颜色交替显示
    Shell字符串
    Shell数组:shell数组的定义、数组长度
    Shell注释
    Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等
    Shell替换:Shell变量替换,命令替换,转义字符
    Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
    Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
  • 原文地址:https://www.cnblogs.com/menglingxu/p/6479794.html
Copyright © 2011-2022 走看看