自定义TableViewCell
有时SDK提供的那几个简单的label远远不能满足我们的需要,我们需要更丰富的界面,这时我们可以利用accessoryView属性。你可以给他赋值我们需要的UIView。
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell* result = nil;
......
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(0.0f, 0.0f, 150.0f, 25.0f);
[button setTitle:@"Expand" forState:UIControlStateNormal];
[button addTarget:self action:@selector(performExpand:)
forControlEvents:UIControlEventTouchUpInside];
result.accessoryView = button;//在这里赋值您需要的UIView
return result;
}
- (void) performExpand:(id)paramSender{
/* Take an action here */
}
这是在列表中的每一行都会显示一个button。点击button会触发 performExpand 方法。
传过来的paramSender就是button对象,可是如果我想知道是哪一行的button被点击了,及获取button所在的TableViewCell,改怎么获取呢?
TableViewCell 是把 accessoryView 当做subview 的,所以我们可以通过button的superview来获取。
- (void) performExpand:(UIButton *)paramSender{
UITableViewCell *ownerCell = (UITableViewCell*)paramSender.superview;
if (ownerCell != nil){
}
}