2

我有几个带有现成委托和数据源方法的 UITableView。如何使用子类化为这些表添加相同的第二个操作/处理程序,但无需手动编辑它们的 didSelectRowAtIndexPath 方法?

如果我使用 UIButtons 而不是表格,那么解决方案是:

在 UIButton 的子类中:

- (void)defaultInit {

    [self addTarget:[PCFlurryManager manager] action:@selector(...) forControlEvents:UIControlEventTouchUpInside];
}

- (void)dealloc {

    [self removeTarget:[PCFlurryManager manager] action:@selector(...) forControlEvents:UIControlEventTouchUpInside];
    [super dealloc];
}

因此,我可以根据需要多次将 addTarget 用于同一事件。但是如何实现表的相似性呢?

4

2 回答 2

0

您可以分配Tag给您的UITableView(S)。然后你可以通过它的标签访问表。

就像是..

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    NSLog(@"Tag: %d",tableView.tag);
    switch (tableView.tag) {
        case 1:
            //stuff for table 1
        break;

        case 2:
            //stuff for table 2
        break;

        default:
        break;
    }

}
于 2013-05-23T09:59:18.240 回答
0

didSelectRowAtIndexPath 给你一个对象(UITableView *)tableView,表明这个方法是为哪个tableview调用的。

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    {
         if(tableView==YourFirstTableviewObject) {
                   //write your code for first
         } 
         else if(tableView==YourSecondTableviewObject) {
                   //write your code for second
         }   
         else if(tableView==YourThirdTableviewObject) {
                   //write your code for Third
         }
         ..........
    }
于 2013-05-23T10:19:40.457 回答