2016-09-17 1 views
0

У меня есть tableView, работающий в моем проекте успешно. Но у меня есть проблема с выбором ячейки и обновлением моего textView, который подключен к tableview в том же viewController.My textView только обновление, когда я делаю длинную печать на tableViewCell. Я хочу обновлять textView каждый раз, когда была нажата ячейка. Я считаю, что когда я нажал, ячейка отменила выбор. Мой частичный код, как следовать ..TableView didSelect ответить на проблему в Swift

Примечание: Я использую следующий код в моих различных проектах, работает без issue..I не я не уверены, что случилось с этим Tableview ....

Спасибо Advance ....

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let CellIdentifier: String = "fontCell" 
    let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(CellIdentifier, forIndexPath: indexPath) 

    let fontName: String = self.fontName[indexPath.row] as! String 

    UIView.animateWithDuration(1, delay: 0, usingSpringWithDamping: 0.3, initialSpringVelocity: 0.5, options: UIViewAnimationOptions.CurveEaseInOut, animations: {() -> Void in 

    cell.textLabel?.text = fontName 
    cell.textLabel!.font = UIFont(name: self.fontName[indexPath.row] as! String, size: 25) 

    }, completion: nil) 

    cell.backgroundColor = UIColor.clearColor() 
    cell.textLabel?.textAlignment = .Center 
    cell.textLabel?.textColor = UIColor.whiteColor() 
    cell.textLabel?.sizeToFit() 
    cell.textLabel?.adjustsFontSizeToFitWidth = true 
    cell.selectionStyle = .Default 

    return cell 
} 

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    //tableView.deselectRowAtIndexPath(indexPath, animated: true) 

    dispatch_async(dispatch_get_main_queue(), {() -> Void in 
    let fontName: String = self.fontName[indexPath.row] as! String 

    self.textView.font = UIFont(name: fontName, size: 20) 
    }) 

} 

ответ

1

didSelectRowAtIndexPath уже должен быть вызван основной поток таким образом удаляя dispatch_async и просто работает код, как это должно быть хорошо

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let fontName: String = self.fontName[indexPath.row] as! String 
    self.textView.font = UIFont(name: fontName, size: 20) 
} 

Если вы добавили распознаватель жестов в таблицуView, чтобы обрабатывать длительное нажатие (или что-то еще), которое может мешать вашим другим кранам. try setting cancelsTouchesInView to false на вашем распознающем устройстве.

tapGestureRecognizer.cancelsTouchesInView = false 
+0

Спасибо Мория. Я уже пробовал ваше решение. Но не повезло, поэтому я попробовал dispatch_async. Я считаю, что что-то не так с моим физическим параметром контроллера табличного представления, который idont еще не знает ... – Joe

+0

Выполняется ли код в файле didSelectRowAtIndexPath? если вы установите в нем точку останова, останавливается ли она при выборе строки? – Moriya

+0

Спасибо. Код работает нормально, когда я продолжаю нажимать на ячейку/длительное нажатие. Но, когда я нажимаю на ячейку, выбранная ячейка происходит, и как только поднимается выбранная ячейка пальца исчезает, а не обновляется просмотр dest ... и я не вижу никакой точки останова в коде ... – Joe