[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; }