在横向视图中,我有一个UIScrollView,我在其中动态添加UITableViews。 UITableViews宽200px,因此屏幕上可以有2-3个。每个单元格都有一个按钮。
按下按钮时,我怎么知道该按钮属于哪个UITableView?
cellForRowAtIndexPath的PS实现:
cell = (CellHistory*)[tableView dequeueReusableCellWithIdentifier:@"Cell"];
if(!cell)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CellHistory" owner:nil options:nil];
for(id currentObject in topLevelObjects)
{
if([currentObject isKindOfClass:[CellHistory class]])
{
cell = (CellHistory *)currentObject;
break;
}
}
}
UIButton *noteButton = [UIButton buttonWithType:UIButtonTypeCustom];
[noteButton setFrame:CGRectMake(0, 0, 44, 44)];
[cell addSubview:noteButton];
[noteButton addTarget:self action:@selector(checkButtonTapped:event:) forControlEvents:UIControlEventTouchUpInside];
return cell;
PS2我如何将UITableViews添加到UIScrollView:
for (int i=0; i<allDays.count; i++) {
CGRect landTableRect = CGRectMake(landContentOffset+0.0f, 60.0f, 200.0f, 307.0f);
landTableView = [[UITableView alloc] initWithFrame:landTableRect style:UITableViewStylePlain];
[landTableView setTag:i];
[landTableView setNeedsDisplay];
[landTableView setNeedsLayout];
landTableView.delegate = self;
landTableView.dataSource = self;
[_landScrollView addSubview:landTableView];
[landTableView reloadData];
landContentOffset += landTableView.frame.size.width;
_landScrollView.contentSize = CGSizeMake(landContentOffset, _landScrollView.frame.size.height);
[allLandTableViews addObject:landTableView];
}
答案 0 :(得分:1)
您应该为每个与每个表视图的标记匹配的按钮添加标记。然后你可以比较它们
答案 1 :(得分:1)
在cellForRowAtIndexPath:
支票
if (tableView == youTableViewA)
button.tag = 1;
else if (tableView == yourTableViewB)
button.tag = 2;
。 。 。 等等。
您使用addTarget:action:forControlEvents:
为按钮指定目标的位置,请确保您的目标方法接受参数:
- (void) targetMethod:(id)sender{
if (sender.tag == 1){
//tableViewA
}else if (sender.tag == 2){
//tableViewB
}
}
。 。 。 等等。
答案 2 :(得分:1)
您可以在UIView
上使用有用的类别方法来遍历视图层次结构,直到找到匹配的父级:
@implementation UIView (ParentOfClass)
- (UIView *)parentViewWithClass:(Class)aClass
{
UIView *current = self;
UIView *result = nil;
while ((current = current.superview) != nil) {
if ([current isKindOfClass:aClass]) {
result = current;
break;
}
}
return result;
}
@end
然后在您的UIButton
处理代码中,通过简单的调用获得UITableView:
- (IBAction)pressedButton:(id)sender
{
UITableView *tableView = [sender parentViewWithClass:[UITableView class]];
// ...
}