0

在横向视图中,我有一个 UIScrollView,我在其中动态添加 UITableViews。UITableView 的宽度为 200 像素,因此屏幕上可以有 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];
        }
4

3 回答 3

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

    }

}

. . . 等等。

于 2013-10-12T21:59:24.920 回答
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]];
    // ...
}
于 2013-10-12T21:59:43.520 回答
1

您应该为每个按钮添加一个与每个表视图的标签匹配的标签。然后你可以比较它们

于 2013-10-12T21:49:57.770 回答