当PopViewController被解雇时重新加载MainViewController

时间:2015-04-11 08:54:44

标签: swift core-data reload uipopovercontroller

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

Main view controller

POPUP view controller

代码:

             @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)
}

对于我使用的.xib。

的popupViewcontoller

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

让我来看看我的问题,在我的mainViewController中我获取了数据,并将它们填入动态创建的标签中。当查看load.I想要在关闭按钮形式popViewController时重新加载mainViewController。

我在关闭按钮内尝试了我的代码,我只是尝试重新加载mainVc:

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

不提供输出。 结论:我想要一种从swift中的另一个视图刷新视图控制器的方法。

提前致谢。

5 个答案:

答案 0 :(得分:2)

只使用UITableView我们可以重新加载数据!所以我们必须使用表视图自定义单元格文本字段或标签。现在我们可以重新加载自定义文本字段数据。

答案 1 :(得分:0)

您的主ViewController是否使用UITableView

您可以使用viewWillAppear并再次获取数据并使用tableView.reloadData()重新加载数据。

编辑:

使用var mainVC = mainviewcontroller(),您只需要创建MainViewController的新实例。如果您想使用reloadInputViews(),可以将其放在viewWillLoad

答案 2 :(得分:0)

您应该使用协议。您可以在此处阅读有关协议的更多信息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)
 }
}

答案 3 :(得分:0)

通过God Grace,我找到了一个解决方案,就是创建一个全局变量

request.user

然后在popovoer控制器保存按钮

中写下以下代码
             Var fetchedArray = Nsarray()

然后使用fetchedArray填充标签。

由于

答案 4 :(得分:0)

Swift 2,试试

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

为我工作