2016-03-07 2 views
-1

Я использую представление таблицы с пользовательской ячейкой. В этой пользовательской ячейке у меня появилась кнопка. Когда я нажимаю эту кнопку, я хочу, чтобы этот цвет стал цветным. Я рисую, как раскрасить эту кнопку, но мне нужно перезагрузить данные для отображения ее с цветом. Но когда я называю «table.reloadData()», происходит небольшое растяжение прокрутки. Существует способ отображения изменений без reloadData() или для отключения растяжения scrollView?Как отображать изменения при нажатии кнопки внутри ячейки?

ответ

0

Вы пробовали перегружать только строку, на которую вы нажали?

tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top 

Для некоторых вещей вам не придется перезагружать вообще. Если вы хотите изменить цвет фона ячейки, вы можете сделать это так. Теперь я замечаю, что вы работаете в Objective-C, и мой пример: Swift - надеюсь, все еще достаточно ясно :-)

Сначала определите пользовательскую ячейку - моя простая с меткой и кнопкой, вы уже что-то подобное. Я не уверен, если вам нужно изменить цвет ячейки или кнопку, так что я сделал как

import UIKit 

class myCell: UITableViewCell 
{ 
    @IBOutlet weak var labelTitle: UILabel! 
    @IBOutlet weak var cmdButton: UIButton! 

    @IBAction func cmdButtonClicked(sender: AnyObject) 
    { 
     self.backgroundColor = UIColor.redColor() 
     cmdButton.backgroundColor = UIColor.blueColor() 

     print("click \(sender.tag)") 
    } 
} 

Если вам нужно держать след, какая кнопка была нажата, то вам нужно установить метку в cellForRowAtIndexPath - но вы не можете даже нужен этот

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    var cell:myCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! myCell 

    cell.labelTitle.text = data[indexPath.row] 
    cell.cmdButton.tag = indexPath.row 

    return cell 
} 
+0

Это не работает ... у меня есть для прокрутки вверх и вниз для просмотра изменений ... –

+0

как странно. вы уверены, что имеете право 'indexPath'? Если вы реагируете на нажатие кнопки в ячейке, вы не начнете с 'indexPath' - вам нужно будет получить это от кнопки, так или иначе, через атрибут' tag'? Что произойдет, если вы будете жестко закодировать indexPath, чтобы какая-либо кнопка нажала кнопку, она обновляет одну конкретную строку, чтобы увидеть, как она работает? – Russell

+0

Я получаю indexPath от положения кнопки внутри этого tableRow ... –