使用 UITableView 委托为 Nil
Delegate is Nil with UITableView
我是 Swift 的新手,正在尝试结合 UITableView 学习委托。我有 2 个场景:具有图像和按钮的主场景 (UIViewController)。按钮前进到第二个场景:选择场景(UITableViewController)。在每个 TableviewCells 中,我都有一个图像,用户将在其中 select 然后我想返回到主屏幕,该图像将被加载到图像位置。我已将所有内容嵌入到导航控制器中。代表总是出现零,我不明白为什么...谢谢
“选择场景-发件人”
protocol TableViewControllerDelegate : class {
func passBackInformation (image: UIImage, name: String)
}
class TableViewController: UITableViewController {
weak var tableViewControllerDelegate : TableViewControllerDelegate?
...
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let image = UIImage(named: productArray[indexPath.row].imageName)!
let name = productArray[indexPath.row].productName
if self.tableViewControllerDelegate != nil {
self.tableViewControllerDelegate?.passBackInformation(image: image, name: name)
}else{
print("Still no delegate")
}
这是我的委托 (UIViewController) - Receiver
中的代码
class ViewController: UIViewController, TableViewControllerDelegate {
func passBackInformation(image: UIImage, name: String) {
frontProductImage.image = image
frontLabel.text = name
}
@IBAction func frontBUtton(_ sender: Any) {
let selectionVC = storyboard?.instantiateViewController(withIdentifier: "SelectProduct") as! TableViewController
selectionVC.tableViewControllerDelegate = self
dismiss(animated: true, completion: nil)
}
在名为 frontBUtton() 的 IBAction 中,正在实例化视图控制器并设置委托。但随后新的视图控制器立即被解散。
与其关闭视图控制器,不如呈现它:
present(selectionVC, animated: true, completion: nil)
将数据传回 tableview controller 后,然后,像这样关闭 view controller:
if self.tableViewControllerDelegate != nil {
self.tableViewControllerDelegate?.passBackInformation(image: image, name: name)
dismiss(animated: true, completion: nil)
}else{
print("Still no delegate")
}
我是 Swift 的新手,正在尝试结合 UITableView 学习委托。我有 2 个场景:具有图像和按钮的主场景 (UIViewController)。按钮前进到第二个场景:选择场景(UITableViewController)。在每个 TableviewCells 中,我都有一个图像,用户将在其中 select 然后我想返回到主屏幕,该图像将被加载到图像位置。我已将所有内容嵌入到导航控制器中。代表总是出现零,我不明白为什么...谢谢
“选择场景-发件人”
protocol TableViewControllerDelegate : class {
func passBackInformation (image: UIImage, name: String)
}
class TableViewController: UITableViewController {
weak var tableViewControllerDelegate : TableViewControllerDelegate?
...
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let image = UIImage(named: productArray[indexPath.row].imageName)!
let name = productArray[indexPath.row].productName
if self.tableViewControllerDelegate != nil {
self.tableViewControllerDelegate?.passBackInformation(image: image, name: name)
}else{
print("Still no delegate")
}
这是我的委托 (UIViewController) - Receiver
中的代码class ViewController: UIViewController, TableViewControllerDelegate {
func passBackInformation(image: UIImage, name: String) {
frontProductImage.image = image
frontLabel.text = name
}
@IBAction func frontBUtton(_ sender: Any) {
let selectionVC = storyboard?.instantiateViewController(withIdentifier: "SelectProduct") as! TableViewController
selectionVC.tableViewControllerDelegate = self
dismiss(animated: true, completion: nil)
}
在名为 frontBUtton() 的 IBAction 中,正在实例化视图控制器并设置委托。但随后新的视图控制器立即被解散。
与其关闭视图控制器,不如呈现它:
present(selectionVC, animated: true, completion: nil)
将数据传回 tableview controller 后,然后,像这样关闭 view controller:
if self.tableViewControllerDelegate != nil {
self.tableViewControllerDelegate?.passBackInformation(image: image, name: name)
dismiss(animated: true, completion: nil)
}else{
print("Still no delegate")
}