2016-08-31 12 views
0

を活性化し、私は画像、いくつかのテキストラベル(1切り捨て)、およびボタンを持つカスタムセルクラスを持っています切り捨てられたテキストラベルの完全な説明を示します。しかし、私が今問題となっているのは、ユーザーが特定のセルのボタンをクリックしたとき、ユーザーがクリックしたセルの完全な説明、および別のセルの完全な説明が表示されている場合です。カスタムセルを選択すると、別のセル

私は、tableviewがdequeueReusableCellWithIdentifier経由でセルを再利用していることが原因だと知っています。ユーザーが特定のセルのボタンをクリックしたときに、そのセルの完全な説明のみが表示されるようにする関数を実装するにはどうすればよいですか?テーブルビューのための

コード:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = self.tableView.dequeueReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as! CustomTVC 

    if listOfShows.count != 0 { 
     // Downloading and displaying picture 
     if let downloadPicture: UIImage = helperFunctions.downloadImage(listOfShows[indexPath.row].imageLink) { 
      cell.imageHolder.image = downloadPicture 
     } 
     // Enlarging/dismissing picture 
     cell.imageHolder.userInteractionEnabled = true 
     let newTapped = UITapGestureRecognizer(target: self, action: #selector(MainTVC.imagedTapped(_:))) 
     cell.imageHolder.addGestureRecognizer(newTapped) 
     // Concatenating channel + series + episode title 
     let concatenatedTitle = listOfShows[indexPath.row].channel + " " + listOfShows[indexPath.row].series + " " + listOfShows[indexPath.row].episodeTitle 
     // Converting into local date/time 
     let universalTime = helperFunctions.localDateAndTimeConverter(listOfShows[indexPath.row].originalAirDate) 

     /* Other labels */ 
     cell.concatenatedTitleHolder.text = concatenatedTitle 
     cell.localDateHolder.text = universalTime 
     cell.descriptionHolder.text = listOfShows[indexPath.row].description 

     cell.seeMoreButton.tag = indexPath.row 
     cell.seeMoreButton.addTarget(self, action: #selector(MainTVC.buttonTapped(_:markedArray:)), forControlEvents: .TouchUpInside) 

     resetCellSettings(cell) 
    } 
    return cell 
} 

func buttonTapped(sender: UIButton, markedArray: [Bool]) { 

    let indexPath = NSIndexPath(forRow: sender.tag, inSection: 0) 
    let cell = tableView.cellForRowAtIndexPath(indexPath) as! CustomTVC 

    cell.seeMoreButton.hidden = true 
    cell.descriptionHolder.numberOfLines = 0 
    cell.descriptionHolder.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    cell.descriptionHolder.sizeToFit() 
} 

func resetCellSettings(cell: CustomTVC) { 
    cell.seeMoreButton.hidden = false 
    cell.descriptionHolder.numberOfLines = 1 
    cell.descriptionHolder.lineBreakMode = NSLineBreakMode.ByTruncatingTail 
    cell.descriptionHolder.sizeToFit() 
} 

答えて

0

あなたはCustomTVCクラスでbuttonTapped funcを置く必要があります。セルが作成されたときに、そのファンクションのseeMoreButtonのアウトレットIBActionを設定します。

関連する問題