Swift - 具有多个自定义单元类时选择单元格

时间:2014-12-30 22:00:11

标签: ios xcode uitableview swift

我有2个自定义单元格,我需要为其设置选择属性。现在,我已经使用布尔值告诉程序该单元格是类型1还是类型2,因为我只是检查代码是否正常工作。

现在我需要程序来找出它本身是哪种类型的单元格,而且我不知道它是如何完成的。

我的代码如下所示:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        if istrue{
        let mySelectedCell: CustomTableCell = tv.cellForRowAtIndexPath(indexPath)! as CustomTableCell

        if (mySelectedCell.accessoryType == UITableViewCellAccessoryType.Checkmark) {
            mySelectedCell.accessoryType = UITableViewCellAccessoryType.None

            if let tx = mySelectedCell.customLabel.text as String!{

                var textLabel:String = String()
                textLabel = tx

                println(textLabel)

                if let ind = find(tempList, textLabel) {
                    tempList.removeAtIndex(ind)
                    println(tempList)

                }
            }
        }

        else {

            mySelectedCell.accessoryType = UITableViewCellAccessoryType.Checkmark
            mySelectedCell.tintColor = UIColor.blackColor()

            if let tx = mySelectedCell.customLabel.text as String!{

                var textLabel:String = String()
                textLabel = tx
                tempList.append(textLabel)

                println(tempList)
            }
        }

        }else{
            let mySelectedCell: CustomTableCell2 = tv.cellForRowAtIndexPath(indexPath)! as CustomTableCell2

            if (mySelectedCell.accessoryType == UITableViewCellAccessoryType.Checkmark) {
                mySelectedCell.accessoryType = UITableViewCellAccessoryType.None

                if let tx = mySelectedCell.titleLabel.text as String!{

                    var textLabel:String = String()
                    textLabel = tx

                    println(textLabel)

                    if let ind = find(tempList, textLabel) {
                        tempList.removeAtIndex(ind)
                        println(tempList)

                    }
                }
            }

            else {

                mySelectedCell.accessoryType = UITableViewCellAccessoryType.Checkmark
                mySelectedCell.tintColor = UIColor.blackColor()

                if let tx = mySelectedCell.titleLabel.text as String!{

                    var textLabel:String = String()
                    textLabel = tx
                    tempList.append(textLabel)

                    println(tempList)
                }
            }
        }
        }

我不知道这是否也是最好的方法,所以如果你有更好的方法来设置这个,请给我一些提示" checkmark"选择样式。

有关如何实现这一目标的所有建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

这是一个客观的例子:

id cell = [tableView cellForRowAtIndexPath:indexPath];

if ([cell isKindOfClass:[PhotoCell2x class]]) {
    NSLog(@"1");
}
else if([cell isKindOfClass:[EffectCell2x class]]){
    NSLog(@"2");
}

如果我有时间,我会添加一个快速版本。希望这有助于.. :))

答案 1 :(得分:0)

对于需要它的人来说, Swift 4 会更新。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let cell = tableView.cellForRow(at: indexPath)

    if (cell?.isMember(of: CLASSNAME.self))!{
        print("hello")
    } else {

    }
}