[ios]tableview

tableView

日期2012-10-23

如果需要通过 界面 获取 当前数据信息的话

则无法使用viewWithTag (因为tag要用于作为作为数据和内容的标记)

比如需要实现cell中有一个 button 根据不同的cell行执行不同的操作。

那么 需要在每次给出cell的术后对button的 tag赋值

如果不能使用viewWithTag 则使用custom一个子类 并ib它的属性到cell 作为操作用。

[其实也不是完全不能使用viewWithTag 比如- -button用正数 其他用负数。。。。但是如果是2个控件要使用呢? 那就变成复杂的数学问题了。。所以还是使用 custom 一个子类吧]

=========================

需要实现2个协议

datagate:控制tableView如何显示

DataSource:控制数据如何显示在cell

tableViewVC 动态下。

在xcode中storyboard 写的原型cell

会在第一次进入tableCell池中判断是否有cell

如果没有则自创建一个自己 并入池

这是为什么我们可以再代码中 直接通过 

dequeueReusableCellWithIdentifier:@"原型cell的indentifier"

tableView的自定义cell

找到两个方法

1.通过xib加载布局 再操作。[更优秀,可重复用]

2.直接在tableViewVC上设置原型cell为Custom,通过属性操作[更简单]

3.直接在tableViewVC上设置原型cell为Custom,通过viewWithTag操作[最简单]

1.通过xib加载布局 再操作。

自己写一个xib然后通过来

NSArray * array=[[NSBundle mainBundle]loadNibNamed:@"TestCell" owner:self options:nil];

来加载出view数组。再获取出自己的cell;

注意,自己写的cell需要 让他的类别为自己写的TableViewCell的子类。[为了操作tableViewCell的子类]

然后将cell的子类通过IB绑定到这个自己写的TableViewCell的子类。

从array到自己的cell后。通过写好了IB来设置子类内容。

 

2.直接在tableViewVC上设置原型cell为Custom,通过属性操作[更简单]

这个其实是更简单的方法 只是做完第一个才想清楚怎么操作。

设置为custom后我遇到的问题是不知道怎么获取到子类对象[既内容对象]。

其实,和上面方法一样。修改原型的类别为自己写的TableViewCell的子类,并且把子类通过IB绑定到属性上。

通过dequeueReusableCellWithIdentifier:@"原型cell的indentifier"

获取到cell并转型成自己写的TableViewCell的子类。通过属性来操作子类赋值。

 

3.直接在tableViewVC上设置原型cell为Custom,通过viewWithTag操作[更简单]

问题还是在于取到cell后不知道如何获得子view的对象。可以通过[cell viewWithTag:NSInteger tagid]

来获取到 子view对象。

 

 

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
//返回 在indexPath位置的cell
{
//    static NSString *CellIdentifier = @"Cell";
//    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    
    // Configure the cell...
    
//    //test1
//    LrnCell * cell;
//    if(cell==nil){
//    NSArray * array=[[NSBundle mainBundle]loadNibNamed:@"TestCell" owner:self options:nil];
//     cell =[array objectAtIndex:0];
//    cell.lab1.text=[NSString stringWithFormat:@"%d",indexPath.row*100];
//    cell.lab2.text=[NSString stringWithFormat:@"%d",indexPath.row];
//    self.num+=1;
//    }
    
    //test2
//    
//        static NSString *CellIdentifier = @"test";
//        LrnCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//    cell.lab1.text=@"test1";
//    cell.lab2.text=[NSString stringWithFormat:@"%d",indexPath.row];
   
    //test3
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"test"];

        if (cell == nil) {
            cell = [tableView dequeueReusableCellWithIdentifier:@"test"];
        }
//    NSInteger x=1;
    UILabel *test=(UILabel *)[cell viewWithTag:1];
    test.text=@"xinde";
    UILabel *test2=(UILabel *)[cell viewWithTag:2];
    test2.text=@"囧2";
    
    
    return cell;
}

相关推荐