我正在进行分配,在ViewController A中,我有三个细胞,钙,碱度,镁。我需要根据viewController A中的细胞更新ViewControllerB。
我应该为每个单元格创建一个segue吗?还是可以通过代码执行此操作?
我尝试使用一个segue,但我觉得这对许多人来说都是……我想使用单元格?
尚无错误
没有segues的选项:
1(在Interfaz Builder中,将标识符分配给ViewControllerB
2(ViewControllerA
需要构型UITableViewDelegate
协议(或UICollectionViewDelegate
如果使用UICollectionView
(
3(在ViewControllerA
中实现方法tableView(_:didSelectRowAt:)
4(在该方法中,实例化 ViewControllerB
实例,示例:
let vc = UIStoryboard(name: "nameofthestoryboard").instantiateViewController(withIdentifier: "ViewControllerB") as! ViewControllerB
5(获取带有索引路径的单元格。
let cell = tableview.cellForRow(at: indexPath) as! YourCellType
6(设置必要的信息以查看Controllerb,示例:
vc.chemicalElement = cell.chemicalElement
7(介绍您创建的ViewControllerb实例。
present(vc, animated: true, completion: nil)
就是全部。
如果您使用的是简单的segue在视图控制器之间移动,而不是将数据传递到另一个,则可以做类似的事情。
您需要在ViewControllera中实例化标题变量。
var elementName : String?
使用函数prepare(for segue: UIStoryboardSegue, sender: Any?)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "SEGUE IDENTIFIER HERE") {
var vc = segue.destinationViewController as ViewControllerB
vc.title = elementName
}
}
您还需要在ViewControllerb中实例化标题变量。
var title : String?
如果您发布了代码,我可以为您提供更具体的帮助,否则这是您可以用来完成此任务的流程
您可以在ViewController B上创建一个公共变量,
public var componentName : String?
然后从ViewControllerA。
传递选定的值(来自DID SELECT方法(let ViewB = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewcontrollerB")
ViewB.componentName = componentName //get this component name from index path
self.navigationController?.show(ViewB, sender: nil)