2014-12-30 6 views
0

У меня есть 2 пользовательских ячейки, для которых мне нужно установить свойства выделения. Прямо сейчас я использовал логическое значение, чтобы сообщить программе, что ячейка является типом 1 или 2, потому что я просто проверял, работает ли код.Swift - выбор ячеек при наличии нескольких пользовательских классов ячеек

Теперь мне нужна программа, чтобы узнать, какой тип ячейки она сама по себе, и я не знаю, как это делается.

Мой код выглядит следующим образом:

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) 
       } 
      } 
     } 
     } 

Я не знаю, если это лучший способ сделать это либо, поэтому, пожалуйста, дайте мне несколько советов, если у вас есть лучший способ, чтобы установить этот «галочки «стиль выбора.

Все предложения о том, как достичь этого, будут оценены.

ответ

0

Вот Objective пример этого:

id cell = [tableView cellForRowAtIndexPath:indexPath]; 

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

Если я получаю время я буду добавлять быструю версию. Надеюсь, это поможет .. :)

+0

Спасибо, я использовал ismemberofclass вместо iskindofclass :) – martin

+0

@ frank21> Добро пожаловать .. :) – Rashad

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 { 

    } 
}