Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从另一个视图中单击按钮时关闭并显示视图_Ios_Swift3 - Fatal编程技术网

Ios 从另一个视图中单击按钮时关闭并显示视图

Ios 从另一个视图中单击按钮时关闭并显示视图,ios,swift3,Ios,Swift3,我有一个容器视图,里面有一个表视图。当我在表格视图上选择一个单元格时,它会显示一个视图控制器(1)。此视图控制器中有一个按钮,用于显示另一个视图控制器(2)。当我离开2时,我需要1来重新加载它的数据。我假设要这样做,我需要辞退并在离开2后再次提交1。我怎样才能做到这一点 用于呈现VC2的VC1代码: @IBAction func contributeButtonTapped(_ sender: Any) { if totalContributions >= NeedStor

我有一个容器视图,里面有一个表视图。当我在表格视图上选择一个单元格时,它会显示一个视图控制器(1)。此视图控制器中有一个按钮,用于显示另一个视图控制器(2)。当我离开2时,我需要1来重新加载它的数据。我假设要这样做,我需要辞退并在离开2后再次提交1。我怎样才能做到这一点

用于呈现VC2的VC1代码:

    @IBAction func contributeButtonTapped(_ sender: Any) {
    if totalContributions >= NeedStore.shared.currentNeed!.amount {
        let alert = UIAlertController(title: "", message: "This need has already been fully contributed to.", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default)
        alert.addAction(okAction)
        self.present(alert, animated: true, completion: nil)
    } else {
        let storyboard = UIStoryboard(name: "Contribute", bundle: Bundle.main)
        let viewController = storyboard.instantiateViewController(withIdentifier: "ContributeViewController") as! ContributeViewController
        viewController.view.backgroundColor = .clear
        viewController.modalPresentationStyle = .overCurrentContext
        self.present(viewController, animated: false, completion: nil)
    }
}
用于切换回VC1的VC2代码:

    func detailView() {
    ApiManager.shared.getNeed(needId: NeedStore.shared.currentNeed!.id) { (need) in
        NeedStore.shared.currentNeed = need
        ApiManager.shared.getNeedUser { (object) in
            if object {
                self.dismiss(animated: false, completion: nil)
                let storyboard = UIStoryboard(name: "NeedDetail", bundle: Bundle.main)
                let viewController = storyboard.instantiateViewController(withIdentifier: "NeedDetailViewController") as! NeedDetailViewController
                viewController.view.backgroundColor = .clear
                viewController.modalPresentationStyle = .overCurrentContext
                self.present(viewController, animated: false, completion: nil)
            }
        }
    }
}
在VC(1)的
viewdide()中添加
self.tableview.reloadData()

如果这不起作用,您可能需要创建一个委托,以便它知道您正在离开VC(2),输入(1),然后刷新它

更新-

添加了委托方法

protocol: ViewController2Delegate: class {
 func reloadTableView()
}

class ViewController2: UIViewController {


weak var delegate: ViewController2Delegate?

@IBOutlet func goBackButton () {
 delegate.reloadTableView()
 }
}
VC1-

class ViewController1: UIViewController, ViewController2Delegate {
 func reloadTableView() {
   self.tableView.reloadData()
   *- Whatever code you might be using to call your data too-*
 }

}

您也可以在视图控制器(1)的
viewdideappease
中处理此问题。我想我说错了,这是我的错。有一个表视图,从技术上讲,它将是第一个视图控制器。在它上面选择一个单元格,我称之为VC(1)。一个关闭的按钮将显示另一个视图,当我离开最终视图时,我需要在单击单元格刷新其数据后显示的视图。我们已尝试重新加载tableView数据,但尚未成功。因此,tableView->TableViewCell->VC1(刷新此?->VC2?表格视图->单击tableView单元格->VC1出现->单击按钮VC1->VC2出现->当VC2解除VC1时需要刷新其数据。我一直在运行它的viewDidLoad,但数据仍然没有刷新。尝试一些简单的方法,添加VC1打印的viewDidLoad()(“测试此方法是否有效”)如果打印,这意味着在解除VC2时调用viewDidLoad()。让我知道:)我实际上已经这样做了,这就是我离开VC2时如何知道viewDidLoad()再次运行的原因。所以,这就是为什么我对为什么没有更新感到困惑的原因。所有信息都是从对数据库的Alamofire调用中检索到的,我在加载VC1和离开VC2时进行了调用,但仍然没有更新。我们打电话并将信息存储在本地。