indexPath在tableView单元格中为Custom UISwitch返回null?

时间:2013-06-06 23:28:11

标签: ios uitableview uiswitch

从技术上讲,它不是UISwitch,而是具有自定义类的UIView,其行为就像UISwitch(https://github.com/domesticcatsoftware/DCRoundSwitch

我在桌子的每一行都使用这个DCRoundSwitch。我想得到DCRoundSwitch所在行的indexPath,但它一直返回null。

以下是配置DCRoundSwitch的方法(使用值更改):

Tied Events

这是我的togglePublic方法:

-(void)togglePublic:(UIControl *)button withEvent:(UIEvent *)event {


    DCRoundSwitch *switch1 = (DCRoundSwitch *)button;
    UITableViewCell *cell = (UITableViewCell *)switch1.superview;
    NSIndexPath *indexPath = [self.tableview indexPathForCell:cell];

    NSLog(@"PUBLICSWITCH PRESSED %@", indexPath);


    //NSIndexPath * indexPath = [self.tableview indexPathForRowAtPoint:[[[event touchesForView: button] anyObject] locationInView: self.tableview]];


    if ( indexPath == nil ){

        return;

    }


    AHBContact *contact = [self.contacts[indexPath.section] allValues][0][indexPath.row];

    NSLog(@"Public switch toggled for: %@", contact);


}

正如您所看到的,indexPath返回nil,因为if语句总是在我们到达“Public switch toggled for:”日志消息之前返回该方法。

1 个答案:

答案 0 :(得分:4)

确保switch1.s​​uperview实际上正如您在此处所假设的那样返回单元格。

有时你会得到你没想到的奇怪的父视图层。