В моем приложении есть несколько экземпляров UITableView
, которые содержат экземпляры подкласса UITableViewCell
под названием BeerTableViewCell
. В моем подклассе я добавил несколько экземпляров UILabel
и несколько экземпляров UIButton
. Код для BeerTableViewCell
следующим образом:Понимание логики для UIButtons в подклассе UITableViewCell
import UIKit
import CoreData
class BeerTableViewCell: UITableViewCell {
//////////////////////////////////////////////////////////////
// MARK: - Properties
//////////////////////////////////////////////////////////////
var beerNameLabel = UILabel()
var breweryNameLabel = UILabel()
var beerCategoryReferenceImageView = UIImageView()
var likeButton = UIButton()
var tryButton = UIButton()
var dislikeButton = UIButton()
var deleteButton = UIButton()
var categoryButtonsArray = [UIButton]()
//////////////////////////////////////////////////////////////
// MARK: - View Lifecycle
//////////////////////////////////////////////////////////////
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
self.autoresizingMask = .FlexibleHeight
self.clipsToBounds = true
}
override func layoutSubviews() {
super.layoutSubviews()
beerNameLabel.frame = CGRectMake(10, 8, self.bounds.size.width - 40, 26)
beerNameLabel.font = UIFont(name: "Avenir Next", size: 18)
contentView.addSubview(beerNameLabel)
breweryNameLabel.frame = CGRectMake(10, 32, self.bounds.size.width - 40, 20)
breweryNameLabel.font = UIFont(name: "Avenir Next", size: 14)
breweryNameLabel.alpha = 0.5
contentView.addSubview(breweryNameLabel)
beerCategoryReferenceImageView.frame = CGRectMake(self.bounds.size.width-35, 20, 20, 20)
beerCategoryReferenceImageView.image = UIImage()
contentView.addSubview(beerCategoryReferenceImageView)
likeButton.frame = CGRectMake(20, 70, 30, 30)
contentView.addSubview(likeButton)
tryButton.frame = CGRectMake(90, 70, 30, 30)
contentView.addSubview(tryButton)
dislikeButton.frame = CGRectMake(160, 70, 30, 30)
contentView.addSubview(dislikeButton)
deleteButton.frame = CGRectMake(230, 70, 30, 30)
contentView.addSubview(deleteButton)
let likeNormalImage = UIImage(named: "like-button")
let likeSelectedImage = UIImage(named: "like-button")
likeButton.setImage(likeNormalImage, forState: .Normal)
likeButton.setImage(likeSelectedImage, forState: .Selected)
let tryNormalImage = UIImage(named: "try-button")
let trySelectedImage = UIImage(named: "try-button")
tryButton.setImage(tryNormalImage, forState: .Normal)
tryButton.setImage(trySelectedImage, forState: .Selected)
let dislikeNormalImage = UIImage(named: "dislike-button")
let dislikeSelectedImage = UIImage(named: "dislike-button")
dislikeButton.setImage(dislikeNormalImage, forState: .Normal)
dislikeButton.setImage(dislikeSelectedImage, forState: .Selected)
let deleteNormalImage = UIImage(named: "delete-button")
let deleteSelectedImage = UIImage(named: "delete-button")
deleteButton.setImage(deleteNormalImage, forState: .Normal)
deleteButton.setImage(deleteSelectedImage, forState: .Selected)1
likeButton.addTarget(self, action: "handleButtonPress", forControlEvents: .TouchUpInside)
tryButton.addTarget(self, action: "handleButtonPress", forControlEvents: .TouchUpInside)
dislikeButton.addTarget(self, action: "handleButtonPress", forControlEvents: .TouchUpInside)
deleteButton.addTarget(self, action: "handleButtonPress", forControlEvents: .TouchUpInside)
categoryButtonsArray.append(likeButton)
categoryButtonsArray.append(tryButton)
categoryButtonsArray.append(dislikeButton)
}
//////////////////////////////////////////////////////////////
// MARK: - States
//////////////////////////////////////////////////////////////
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
//////////////////////////////////////////////////////////////
// MARK: - Helpers
//////////////////////////////////////////////////////////////
func handleButtonPress() {
println("Button Pressed")
}
}
Я с трудом найти способ выполнить действие при нажатии на кнопки в любом из моих UITableView
экземпляров. Я смог успешно добавить действие к кнопкам, которые распечатывают, что была нажата кнопка (println("Button Tapped")
:
У меня возникли проблемы с выяснением того, как реализовать метод делегата для обработки нажатия кнопок. обнаружили, что реализованы действия UIButton
через Interface Builder. Должен ли я использовать Interface Builder для создания кнопок и активирования действий над ними? Как вы можете видеть, в настоящее время я создаю свои кнопки в коде, но найденные мной учебные пособия в основном делают это this путь.
немного руководство было бы весьма признателен!
Решенный:
Для того, чтобы контроллер представления, что соответствует протоколу делегата разрешить назначение self
делегировать ячейки, я просто должен был реализовать метод делегата в контроллере представления. Если бы я не добавил метод делегата, Xcode не разрешил назначение.
Используйте метод UIControl addTarget: действие: forControlEvents: для перехвата нажатий кнопок. – rocky
@rocky, я уже добавил этот метод к экземплярам 'UIButton' в конце' layoutSubviews() '. –