当 PopViewController 关闭时重新加载 MainViewController

Reload MainViewController when PopViewController dismissed

我有一个主视图控制器并弹出 controller.Please 参考屏幕截图。

代码:

             @IBAction func show(sender: AnyObject) {

    var popView = popupviewcontroller(nibName:"popview",bundle:nil)
    var popController = UIPopoverController(contentViewController: popView)

    popController.popoverContentSize = CGSize(width: 450, height: 450)
  popController.presentPopoverFromRect(sender.frame, inView: self.view, permittedArrowDirections: UIPopoverArrowDirection.Down, animated: true)
}

对于 popupViewcontoller,我使用了 .xib。

当按下保存按钮时数据保存到核心数据。

让我们来解决我的问题,在我的 mainViewController 中,我获取数据并将它们填充到动态创建的 lables.That 时发生 load.I 当按下关闭按钮表单 popViewController 时想要重新加载 mainViewController。

我在关闭按钮中试过我的代码在这里,我只是试图重新加载 mainVc:

         var mainVC = mainviewcontroller()         
    @IBAction func close(sender: AnyObject) {
 self.dismissViewControllerAnimated(true, completion: nil)
       //mainVc.viewDidLoad()
     mainVC.reloadInputViews()
   }

不给出输出。 结论:我想要一种从 swift.

中的另一个视图刷新视图控制器的方法

提前致谢。

你的主要 ViewController 使用 UITableView 吗?

您可以使用viewWillAppear重新获取数据,然后使用tableView.reloadData()重新加载数据。

编辑:

对于 var mainVC = mainviewcontroller(),您只是在创建 MainViewController 的新实例。如果要用reloadInputViews(),可以放在viewWillLoad.

你应该为它使用协议。您可以在此处阅读有关协议的更多信息 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html

您可以在 PopViewController 中制定协议

protocol PopViewControllerProtocol { static var valuesChanged() }

稍后您应该在 MainViewController 中实现此协议并刷新数据。

示例:

文件UIPopoverController.swift

protocol UIPopoverControllerDelegate{
    func valuesChanged(changedValue:String)
}

class UIPopoverController: UIViewController {

var delegate: UIPopoverControllerDelegate! = nil
@IBAction func close(sender: AnyObject) {
  self.dismissViewControllerAnimated(true, completion: nil)
   //mainVc.viewDidLoad()
 mainVC.valuesChanged("some value")
}}

文件MainViewController.swift

class MainViewController: UIViewController, UIPopoverControllerDelegate       
{
   func valuesChanged(changedValue:String) {
     //this will be called when popuviewcontroller call valueschanged on delegate object
   }

     @IBAction func show(sender: AnyObject) {

var popView = popupviewcontroller(nibName:"popview",bundle:nil)
var popController = UIPopoverController(contentViewController: popView)
popController.delegate = self;
popController.popoverContentSize = CGSize(width: 450, height: 450)
popController.presentPopoverFromRect(sender.frame, inView: self.view,      permittedArrowDirections: UIPopoverArrowDirection.Down, animated: true)
 }
}

只有使用 UITableView 才能重新加载数据!,所以我们必须使用 table 查看自定义单元格文本字段或标签。现在我们可以重新加载自定义文本字段数据了。

有了上帝的恩典,我找到了一个解决方案,就是创建一个全局变量

             Var fetchedArray = Nsarray()

然后在popovoer controller save button中写入如下代码

     func save(){
          // Write codes for saving data 

           let request = NSFetchRequest(entityName: "Enitity name")

        request.returnsObjectsAsFaults = false

        let   Total   = try? context.executeFetchRequest(request)



        if let wrapResults = Total {

            fetchedArray = wrapResults

        }


             }

然后使用 fetchedArray 填充标签。

谢谢

Swift2、试试

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle 
viewDidLoad()
return.None

适合我