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



我有要在表格视图中显示的项目列表。并在单击每个 项目 我想触发一个方法。 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)
    }

这就是数据在表视图中的填充方式。在每一行我 显示"单元格标签",然后单击我想调用的单元格 "方法"。

我正在做的是

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 上工作正常。

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

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

在 Swift 4 中,@objc推理非常有限。我怀疑在 Swift 中动态创建一个Selector会是一个很好的策略。

相关内容

  • 没有找到相关文章

最新更新