当 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
适合我
我有一个主视图控制器并弹出 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
适合我