我有一个主视图控制器并弹出控制器。请参考屏幕截图。
代码:
@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中的另一个视图刷新视图控制器的方法。
提前致谢。
答案 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
为我工作