我正在尝试使用https://github.com/raywenderlich/mvc-modern-approach中的代码 按照这种模式去除东西是非常好的。 但我一度陷入困境。 当单元格的didSelect被调用时,我想推送另一个带有与会者(单元模型)细节的控制器。
我们如何通过通用ui实现这一目标?
答案 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)
}
}