如何基于单元格更改数据一个视图控制器



我正在进行分配,在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)

相关内容

  • 没有找到相关文章