使用Ray的MVC演示,并希望实现TableViewDelegate

时间:2017-04-28 06:24:01

标签: ios swift model-view-controller mvvm

我正在尝试使用https://github.com/raywenderlich/mvc-modern-approach中的代码 按照这种模式去除东西是非常好的。 但我一度陷入困境。 当单元格的didSelect被调用时,我想推送另一个带有与会者(单元模型)细节的控制器。

我们如何通过通用ui实现这一目标?

3 个答案:

答案 0 :(得分:0)

当我理解正确时,你试图避免使用带有segue的InterfaceBuilder。 您是否尝试使用UIViewController中的当前函数?

@Override
public Context getBaseContext() {
    mContext = getBaseContext();
    return mContext;
}

答案 1 :(得分:0)

1-在故事板中选择您要呈现的视图控制器,并在类名下放置任何storyboard id示例:" MyViewController"。

2-然后在didSelectRowAtIndexPath中写下以下内容:

 let vc = self.storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! MyViewController
  //here you can pass any variable example: vc.variable = myVariable

  DispatchQueue.main.async(execute: {
        self.navigationController?.pushViewController(vc, animated: true)

    });

答案 2 :(得分:0)

解决: 我的问题是基于GitHub中的MVC演示,并使用了这种设计模式。

在TableViewDataSource中,我添加了一个变量

var actionHandler: ((Model) -> Void)?

并在didSelect中调用它。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    actionHandler?(dataSource[indexPath.row])
}

在UIController中

collectionViewDataSource.actionHandler = { [weak self] (model) in
    guard let strongSelf = self else { return }
    if let cellTapped = strongSelf.viewModel?.didSelectItem {
        cellTapped(model)
    }
}