У меня есть класс ManageCell
, в котором хранятся фреймы, задаются тексты меток и т. Д. Какие подвид UIView CellView
, который находится в ViewController
.UIButton не доступен для кликов при реализации из класса
ManageCell:
import Foundation
import UIKit
class ManageCell {
var name: UILabel
var viewBelowButton: UIView
var deleteButton: UIButton
init (name: String) {
self.name = UILabel(frame: CGRectMake(10,15,250,40)
self.name.text = name
self.name.sizeToFit()
self.viewBelowButton = UIButton(frame: CGRectMake(UIScreen.mainScreen.bounds.width, 0, 70, 70)
//set outside the visible area so that it can be animated in.
self.viewBelowButton.backgroundColor = UIColor.redColor()
self.deleteButton = UIButton(frame: CGRectMake(0,0,70,70))
self.deleteButton.addTarget(ViewController.self, action: "deleteButtonPressed:", forControlEvents: UIControlEvents.TouchUpInside)
self.deleteButton.setTitle("delete", forState: .Normal)
}
}
ViewController:
var cellView: [UIView] = []
var manageCells: [ManageCell] = []
...
//fill the manageCells array
func setSubViews() {
for (index, cell) in manageCells.enumerate() {
cellView.append(UIView(frame: CGRectMake(0, originY, view.bounds.width, 70)
cellView[index].addSubview(cell.name)
cellView[index].addSubview(cell.viewBelowButton)
cell.viewBelowButton.addSubview(cell.deleteButton)
}
}
func editing() {
var frame = CGRectMake(view.bound.width - 70, 0, 0, 70)
for cell in cells {
UIView.animateWithDuration(0.2, animations: {
cell.viewBelowButton.frame = frame
}
}
}
func deleteButtonPressed(sender: UIButton) {
print("button pressed")
}
пользователя Взаимодействие включена на обоих
cellView[index]
,viewBelowButton
иdeleteButton
.
Проблема я столкнулся в том, что deleteButton
не реагирует на прикосновения. Функция deleteButtonPressed:
не вызывается.
код: https://github.com/an23lm/swift-stuff
Я не уверен, если это хорошая практика, любые предложения приветствуются.
Похоже, кнопка находится за пределами рамки одного из своих superviews. Попробуйте установить 'clipsToBounds' в' true' для всех задействованных представлений. Если я прав, вы больше не сможете увидеть кнопку (или, по крайней мере, ее часть). –
Почему бы вам не добавить addTarget, когда вы добавляете кнопку в свой класс ViewController? Таким образом, у вас будет селектор в том же классе. Также проверьте рамку, как правильно предложил Аарон. –
@GurtejSingh Хорошая точка. Это еще одна проблема, хотя кнопочный выключатель даже не регистрируется, или OP не потерпит крах. –