从委托发送XIB类

时间:2017-07-08 07:27:19

标签: ios objective-c iphone uitableview

我的桌子有一个自定义单元格,有两个按钮可供选择; '是'和'不'。

我的表有多个单元格类型,所以我创建了一个XIB,我在同一个xib中有两个视图;我根据章节编号选择单元格的视图。

   CellTakeFive *cell =  (CellTakeFive *)[tableView dequeueReusableCellWithIdentifier:@"CellTakeFive"];

    if (cell == nil) {

        if (indexPath.section == 1 || indexPath.section == 2){
            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CellTakeFive" owner:self options:nil];
            cell = [topLevelObjects objectAtIndex:1];
        }
        else if (indexPath.section == 0 || indexPath.section == 3)
        {
            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CellTakeFive" owner:self options:nil];
            cell = [topLevelObjects objectAtIndex:0];
        }
    }

现在我设置了相同的代表'是'和'不'选择两个XIB中的按钮。我点击YesNo点按即可拨打电话。

- (IBAction)onClickSelection:(id)sender
{
    [self.delegate selectionWasTapped:self tab:[sender tag]];
}

现在我在两个单元格中都有不同的设计,所以当我点击Cell1(标记设置为:1)委托发送自我和委托调用我的表类。

但问题是有时委托会向自己发送错误的单元格,而我在表类中得到错误的单元格。

这是我的委托方法:

- (void)selectionWasTapped:(CellTakeFive *)cell tab:(int)tag
{

    selectedButtonTag = tag;
    NSIndexPath *indexPath = [self.tblList indexPathForCell:cell];

    NSLog(@"-----%i -- %i ----",indexPath.section,indexPath.row);

    [_tblList beginUpdates];
    [_tblList reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
    [_tblList endUpdates];
}

那里有什么问题?如何通过点击按钮发送特定单元格。?

1 个答案:

答案 0 :(得分:0)

谢谢谁试过。

我通过不使用出队单元解决了这个问题。表示每次表格使用单元格时都会加载单元格。在这种情况下,我每次都需要调用我的业务逻辑。

所以我删除条件。

   CellTakeFive *cell =  (CellTakeFive *)[tableView dequeueReusableCellWithIdentifier:@"CellTakeFive"];

    if (indexPath.section == 1 || indexPath.section == 2){
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CellTakeFive" owner:self options:nil];
        cell = [topLevelObjects objectAtIndex:1];
    }
    else if (indexPath.section == 0 || indexPath.section == 3)
    {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CellTakeFive" owner:self options:nil];
        cell = [topLevelObjects objectAtIndex:0];
    }