【问题标题】:Swift - How to reload ViewController from a ModalPopupControllerSwift - 如何从 ModalPopupController 重新加载 ViewController
【发布时间】:2018-12-16 07:20:23
【问题描述】:

我有 2 个 ViewController,一个名为 FirstViewController,它包含一个 UIImage 和一个 UIButton,第二个名为 ModalPopupViewController,它包含 2 个按钮

所以在我的 FirstViewController 上,当我按下 UIButton 时,它会在当前上下文中进行“交叉溶解”过渡
在 ModalPopupViewController 上,当我按下第一个按钮时,我使用 UIImagePickerController 选择一张图片并保存它,当我按下第二个按钮时,我关闭视图,但我的图片仅在我重新启动我的应用程序时出现。
如何重新加载当我离开 ModalPopupViewController 时我的 FirstViewController ?

我尝试调用 viewWillAppearviewDidAppear,但当我从 ModalPopupViewController 回到 FirstViewController 时,没有任何附加内容

【问题讨论】:

    标签: ios swift uiviewcontroller modalviewcontroller


    【解决方案1】:

    您可以使用委托模式

    protocol ReloadManager {
    
        func reloadImageV(image:UIImage)
    }
    

    当你呈现模态时

    let modal = ///
    
    modal.delegate = self
    
    present(modal//////
    
    class FirstVC:UIViewController , ReloadManager {
    
    
        func reloadImageV(image:UIImage) {
          // reload here
        }
    }
    
    
    class ModalVC:UIViewController {
    
        var delegate:ReloadManager?
    
    
        @IBAction func btnClicked(_ sender:UIButton) {
    
            delegate?.reloadImageV(image: sendedImage)
    
            dismiss(animated: true, completion: nil)
        }
    }
    

    //

    删除 segue 并在导航到模态的 btn 操作中执行此操作,给模态一个故事板标识符,将其转换为真正的模态类名称

    let vc = self.storyboard?.instantiateViewController(withIdentifier: "modalID") as! ModViewController
    
    vc.delegate = self
    
    vc.providesPresentationContextTransitionStyle = true;
    
    vc.definesPresentationContext = true;
    
    vc.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
    
    self.present(vc, animated: false, completion: nil)
    

    【讨论】:

    • 我认为我做错了什么,在我的FirstViewController.swift 中我在类之外添加了协议,然后在类中添加了 func 和 SuperClass。在我的ModalPopupViewController 中,我在按钮操作中添加了变量和函数。
    • 但我的 swift 文件中没有这些行 let modal = /// modal.delegate = self present(modal//////
    • 你如何呈现模态,,segue,present?
    • 我已经使用 Interface Builder 进行了“Present Modally”转换
    • 你在哪里做self.performSegue
    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2015-08-12
    • 2020-03-25
    • 2021-05-28
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多