找出该按钮属于哪个UITableView

时间:2013-10-12 21:45:51

标签: ios uitableview uibutton

在横向视图中,我有一个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];
        }

3 个答案:

答案 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]];
    // ...
}