Я использую представление таблицы с пользовательской ячейкой. В этой пользовательской ячейке у меня появилась кнопка. Когда я нажимаю эту кнопку, я хочу, чтобы этот цвет стал цветным. Я рисую, как раскрасить эту кнопку, но мне нужно перезагрузить данные для отображения ее с цветом. Но когда я называю «table.reloadData()», происходит небольшое растяжение прокрутки. Существует способ отображения изменений без reloadData() или для отключения растяжения scrollView?Как отображать изменения при нажатии кнопки внутри ячейки?
-1
A
ответ
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
}
Это не работает ... у меня есть для прокрутки вверх и вниз для просмотра изменений ... –
как странно. вы уверены, что имеете право 'indexPath'? Если вы реагируете на нажатие кнопки в ячейке, вы не начнете с 'indexPath' - вам нужно будет получить это от кнопки, так или иначе, через атрибут' tag'? Что произойдет, если вы будете жестко закодировать indexPath, чтобы какая-либо кнопка нажала кнопку, она обновляет одну конкретную строку, чтобы увидеть, как она работает? – Russell
Я получаю indexPath от положения кнопки внутри этого tableRow ... –