gpt4 book ai didi

swift - 自定义委托(delegate)不会从 ContainerView 执行

转载 作者:行者123 更新时间:2023-11-28 14:54:28 25 4
gpt4 key购买 nike

我尝试在我的 ViewController 中获取一个事件/操作,如果我的 Tableview 中的一行被按下。
我有以下 Storyboard: Project's Storyboard

我的 Storyboard 中的 Tableview 的 StoryboardID 为“myTableViewController”
我的(目的地)ViewController:

import UIKit

class ViewController: UIViewController, songsDelegate {

@IBOutlet weak var label: UILabel!

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = UIColor.red
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tableviewController = storyboard.instantiateViewController(withIdentifier: "myTableViewController") as! TableViewController
tableviewController.delegate = self


}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func songTapped(_ title: String) {
print(" action ")
self.label.text = title
}

}

我的(响应)TableViewControllerDelegate 协议(protocol):

import UIKit



protocol songsDelegate: class {
func songTapped(_ title: String)
}



class TableViewController: UITableViewController {
weak var delegate : songsDelegate?

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 12
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = "Titel \(indexPath.row + 1)"
return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(indexPath.row)
self.delegate?.songTapped( "Titel \(indexPath.row + 1)" )
}
}

我的问题是:为什么 ViewController 中的 func songTapped(_ title: String) 没有执行?

最佳答案

您正在实例化一个 TableViewController 对象,但您没有将它存储到强引用中,也没有将它的 View 作为 subview 添加到 ViewController 的 View 上

   let tableviewController = storyboard.instantiateViewController(withIdentifier: "myTableViewController") as! TableViewController
tableviewController.delegate = self

当viewDidLoad函数结束时,你的变量tableviewController就消失了

关于swift - 自定义委托(delegate)不会从 ContainerView 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49496203/

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