gpt4 book ai didi

ios - 在 FirstVC 中选择单元格后,如何为 SecondVC 中的每个单元格调用按钮操作?

转载 作者:行者123 更新时间:2023-11-29 05:46:22 25 4
gpt4 key购买 nike

我有两个 View Controller ,它们有两个不同的 TableView ,其中 FirstVC 通过 segue 将数据发送到 SecondVC。我有来自 json 文件的数据,一切正常。我在 SecondVC (称为 likeButton) 中有一个按钮,我希望按下它时显示“类似图像”,然后再次按下则返回到正常图像“不喜欢”。我实现了这一点并且工作得很好。还将数据发送回 FirstVC,其中显示图像“类似”。我使用 UserDefaults。我的问题是,当您按下按钮在 SecondVC 中显示“类似图像”时在 likeButtonAction(_ sender: UIButton) 函数中,它会在每个单元格中被按下。我需要为该特定单元格选择。我对 Xcode 还很陌生。任何帮助都感激不尽。谢谢

这就是我所拥有的:第一个 View Controller

import UIKit

class FirstVC: UIViewController, UITableViewDataSource, UITableViewDelegate {
let defaults = UserDefaults.standard

@IBOutlet weak var tableView: UITableView

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "popDetails" {
guard let vc = segue.destination as? DetailsViewController,
let index = tableView.indexPathForSelectedRow?.row
else {
return
}

vc.cocktailsName = drinks[index].cocktailName
// more data send
}
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return drinks.count
}

func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
tableView.rowHeight = 260

let cell = tableView.dequeueReusableCell(withIdentifier: "favoriteCell") as! TableViewCell

cell.cocktailLabel.text = drinks[indexPath.row].cocktailName

selectedValue = defaults.value(forKey: "myKey") as! String

if selectedValue == "true" {
cell.heartImage.image = UIImage(named: "heart")
} else if selectedValue == "false" {
cell.heartImage.image = UIImage(named: "transparent")
}

return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
DispatchQueue.main.async {
self.performSegue(withIdentifier: "popDetails", sender: self)
}
}
}

第二个 View Controller :

var selectedValue = String()

class SecondVC: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextViewDelegate {
var cocktailsName: String!

@IBOutlet weak var tableView: UITableView!

var mainCocktails: Cocktails!
var tap = UITapGestureRecognizer()
var defaults = UserDefaults.standard
var checked = false

@IBAction func done(_ sender: AnyObject) {
dismiss(animated: true, completion: nil)
}

@IBAction func likeButtonAction(_ sender: UIButton) {
if checked {
sender.setImage(UIImage(named:"likeButton"), for: UIControl.State.normal)
checked = false
} else {
sender.setImage(UIImage(named:"likeButtonOver"), for: UIControl.State.normal)
checked = true
}

selectedValue = String(checked)
defaults = UserDefaults.standard
defaults.set(selectedValue, forKey: "myKey")
defaults.synchronize()
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "buttonsCell") as! MainPictureViewCell

cell.nameLabel.text = cocktailsName
selectedValue = self.defaults.value(forKey: "myKey") as! String

if selectedValue == "true" {
cell.likeButton.setImage(UIImage(named: "likeButtonOver"), for: .normal)
} else if selectedValue == "false" {
cell.likeButton.setImage(UIImage(named: "likeButton"), for: .normal)
}
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
}

最佳答案

您将按钮放置在单元格中,并在单元 Controller 中创建 socket 。然后,您必须在 cellForRowAt 中将目标添加到按钮,并将 indexpath.row 的标签提供给按钮

extension ViewController: UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TableCell") as! TableCell
cell.button.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside)
cell.button.tag = indexPath.row
return cell
}

}

//MARK:- Handel  Button
@objc func buttonPressed(sender:UIButton){
print(sender.tag)

}

关于ios - 在 FirstVC 中选择单元格后,如何为 SecondVC 中的每个单元格调用按钮操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56119749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com