у меня есть табличное представление с пользовательской ячейкой, в которой есть кнопка ... если я нажал на кнопку, действие должно быть выполнено ..
проблема в том, что кнопка не нажата, и нажата вся ячейка, и нужное мне действие никогда не произойдет!
как это решить? я хочу нажать на кнопку, а не на ячейку, и выполнять определенные действия при нажатии ..
вот что я делаю, но не работает ..
пользовательская ячейка:
class CustomViewCell8: UITableViewCell {
var onButtonTapped : (() -> Void)? = nil
@IBOutlet weak var servicebtn: UIButton!
@IBAction func Clicked(_ sender: UIButton) {
if let onButtonTapped = self.onButtonTapped{
onButtonTapped()
}
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
и в контроллере вида:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableview.dequeueReusableCell(withIdentifier: "CustomCell8") as! CustomViewCell8
cell.servicebtn.setBackgroundImage(UIImage(named: serviceimage[indexPath.row]) as UIImage?, for: UIControlState.normal)
cell.onButtonTapped = {
if self.number == 1 {
if indexPath.row == 0{
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc: UIViewController = storyboard.instantiateViewController(withIdentifier: " ") as UIViewController
self.present(vc, animated: true, completion: nil)
let userDefaults = UserDefaults.standard
let decoded = userDefaults.object(forKey: "services") as! Data
let decodedService = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! [Service]
for service in decodedService {
if service.name == " "{
GetShiftsAndPrices(id: service.id)
}
}
}else if indexPath.row == 1{
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc: UIViewController = storyboard.instantiateViewController(withIdentifier: " ") as UIViewController
self.present(vc, animated: true, completion: nil)
let userDefaults = UserDefaults.standard
let decoded = userDefaults.object(forKey: "services") as! Data
let decodedService = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! [Service]
for service in decodedService {
if service.name == " "{
GetShiftsAndPrices(id: service.id)
}
}
}else if indexPath.row == 2{
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc: UIViewController = storyboard.instantiateViewController(withIdentifier: " ") as UIViewController
self.present(vc, animated: true, completion: nil)
let userDefaults = UserDefaults.standard
let decoded = userDefaults.object(forKey: "services") as! Data
let decodedService = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! [Service]
for service in decodedService {
if service.name == " "{
GetShiftsAndPrices(id: service.id)
}
}
}
......
return cell
}
это работало со мной раньше ... но теперь не работает! я не знаю, что случилось .. я делаю что-то не так?