无法识别的选择器发送到实例Xcode 9

时间:2018-04-05 07:39:31

标签: ios iphone swift4 xcode9 unrecognized-selector

  

我有要在表格视图中显示的项目列表。点击每个   item我想触发一个方法。 I-E

var menuItems = [LeftMenuItem]() // -> Define at top of vie controller

func populateLeftMenuData() {  // populating data in viewDidLoad
        var leftMenuItem =  LeftMenuItem(imageName: "flagIcon", cellLabel : "Home" , method : "home")
        menuItems.append(leftMenuItem)
        leftMenuItem =  LeftMenuItem(imageName: "flagIcon", cellLabel : "Logout" , method : "logout")
        menuItems.append(leftMenuItem)
    }
  

这是在tableview中填充数据的方式。在我的每一行   显示“细胞标签”,点击我要调用的细胞   “方法”。

     

我正在做的是

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            let leftMenuItem = menuItems[indexPath.row]
            perform(Selector(leftMenuItem.method!))
        }

    func logout () {
           print("logout")   
        }

    func home () {
           print("Home")  
        }
  

但是点击单元格会将无法识别的选择器发送给   实例。对于xCode 8 swift 3来说,同样的工作正常。

1 个答案:

答案 0 :(得分:0)

只需将@objc放在使用Selector s调用的所有方法之上:

@objc func logout() {
    print("logout")
}

@objc func home() {
    print("Home")
}

在Swift 4中,@objc inference is very limited。我怀疑在Swift中动态创建Selector是一个很好的策略。