自定义的UITableViewCell didSelectRowAtIndexPath方法不会被调用

问题描述 投票:1回答:3

我创建了我用画我的UITableViewCell一个自定义的UITableViewCell类。一切都是正确绘制但是由于我把到我的UITableViewCell我一直与选择的电池问题的元素。

这是我的方法用于绘制的UITableViewCell这是我自定义的UITableViewCell

- (void)drawCell
{
    nameString = [[UILabel alloc] init];
    nameString.backgroundColor = [UIColor redColor];
    nameString.frame = CGRectMake(15.0, 0.5, 70.0, 40.0);
    nameString.text = [itemsDictionary objectForKey:@"Name"];

    lastNameString = [[UILabel alloc] init];
    lastNameString.backgroundColor = [UIColor clearColor];
    lastNameString.frame = CGRectMake(105.0, 0.5, 95.0, 40.0);
    lastNameString.text = [itemsDictionary objectForKey:@"LastName"];

    addressString = [[UILabel alloc] init];
    addressString.backgroundColor = [UIColor clearColor];
    addressString.frame = CGRectMake(220.0, 10.5, addressString.frame.size.width, 50.0);
    addressString.text = [NSString stringWithFormat:@"ISN %@: %@",[itemsDictionary objectForKey:@"AddNumber"] ,[itemsDictionary objectForKey:@"AddString"]];
    [addressString sizeToFit];

// scrollcell has a dynamic scrollwidth depending on the sddressString but has a framesize of a normal UITableViewCell
    scrollCell = [[UIScrollView alloc] init];
    scrollCell.backgroundColor = [UIColor blueColor];
    scrollCell.frame = CGRectMake(0.0, 0.0, ScreenWidth, 45.0);
    [scrollCell setContentSize:(CGSizeMake((220.0 + addressString.frame.size.width)+15, 45.0))];

    [scrollCell addSubview:nameString];
    [scrollCell addSubview:lastNameString];
    [scrollCell addSubview:addressString];
    [[self contentView] addSubview:scrollCell];
}

正如你所看到的,我将覆盖我认为这是阻止的UITableViewCell代表选择方法在整个小区一个UIScrollView。

我怎样才能获得委托方法didSelectRowAtIndexPath方法来工作?

ios objective-c uitableview uiscrollview
3个回答
1
投票

你已经添加了以下?

@implementation ViewController <UITableViewDelegate, UITableViewDataSource>

并设置委托自我?

self.tableview.delegate = self;

0
投票

在小区一个UIScrollView总是会因为它拦截事件,是一个问题。如果可以的话,依靠事实表视图滚动,使细胞一样大,它需要显示的内容。

如果你必须有滚动视图那里你可能要在单元格的顶部添加视图,添加自己的手势识别器,并选择哪些事件会被发送到表视图,其中滚动视图。

退房this answer也 - 你可以发送的touchesBegan /移动/端至nextResponder也。


0
投票

其中一个其他两个答案可能是正确的道路,但为了以防万一,如果你使用的是故事板赛格瑞那些将didSelectRowAtIndexPath方法前视SEGUE会发生什么,有可能是无关紧要让你有这么代码。

© www.soinside.com 2019 - 2024. All rights reserved.