SWIFT:不知道如何将选定的值从弹出窗口返回到调用控制器
SWIFT: No idea how to get back the selected value from a popover to the calling controller
我只是对 Swift 弹出框“return”值感到疯狂。我是 Objectiv-C 和 SWIFT 的新手,但我尝试专注于 SWIFT.
我查看了有关 Google 和 Whosebug 的教程,了解如何管理 iOS 弹出窗口,学到了很多东西,但最后的和平我无法做到。太棒了,看看使用 Swift 和 Xcode 6 是多么容易,喜欢它,但我无法弄清楚如何将 selected 值从我的弹出窗口取回我的调用视图控制器。
所以这是我的问题:
(旁注:我正在使用 SWIFT 并且全部使用故事板)
我创建了一个带有 select 货币按钮的主 ViewController
。此按钮打开一个“select 货币”弹出窗口(通过 CTRL 将其拖动到 CTV-Controller 链接到 CurrencyTableViewController
(CTV)。
到目前为止一切顺利。问题是,我不知道如何从 CTV-Table 中取回 selected table 行(货币);-(所以我需要 selected调用 ViewController
.
中的货币(table 行)
这是我的ViewController
(调用弹出窗口)
的摘录
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate
[...]
// This button is calling the popover
@IBAction func buttonCurrency(sender: AnyObject) {
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let controller = segue.destinationViewController as? CurrencyTableViewController {
controller.popoverPresentationController?.delegate = self
return
}
}
[...]
希望有人可以帮助我解决最后一英里丢失的问题,如何将 selected 行值恢复到我的 ViewController。
提前致谢
干杯
约翰
我做了一个简单的例子,希望对你有帮助:
// This is you popover's class
@objc protocol CurrencySelectedDelegate {
func currencySelected(currName: String)
}
class MyPopOverController: UIViewController {
weak var delegate: CurrencySelectedDelegate?
@IBAction func readyButtonPressed(sender: AnyObject) {
// Do what you want
delegate?.currencySelected("Euro/Dollar etc....")
// close popover
}
}
// ViewController
class ViewController: UIViewController, CurrencySelectedDelegate {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "mySegue" { // your identifier here
let controller = segue.destinationViewController as! MyPopOverController
controller.delegate = self
}
}
}
请记住,只需在 ViewController 中声明 currencySelected 函数即可。
我只是对 Swift 弹出框“return”值感到疯狂。我是 Objectiv-C 和 SWIFT 的新手,但我尝试专注于 SWIFT.
我查看了有关 Google 和 Whosebug 的教程,了解如何管理 iOS 弹出窗口,学到了很多东西,但最后的和平我无法做到。太棒了,看看使用 Swift 和 Xcode 6 是多么容易,喜欢它,但我无法弄清楚如何将 selected 值从我的弹出窗口取回我的调用视图控制器。
所以这是我的问题: (旁注:我正在使用 SWIFT 并且全部使用故事板)
我创建了一个带有 select 货币按钮的主 ViewController
。此按钮打开一个“select 货币”弹出窗口(通过 CTRL 将其拖动到 CTV-Controller 链接到 CurrencyTableViewController
(CTV)。
到目前为止一切顺利。问题是,我不知道如何从 CTV-Table 中取回 selected table 行(货币);-(所以我需要 selected调用 ViewController
.
这是我的ViewController
(调用弹出窗口)
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate
[...]
// This button is calling the popover
@IBAction func buttonCurrency(sender: AnyObject) {
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let controller = segue.destinationViewController as? CurrencyTableViewController {
controller.popoverPresentationController?.delegate = self
return
}
}
[...]
希望有人可以帮助我解决最后一英里丢失的问题,如何将 selected 行值恢复到我的 ViewController。
提前致谢
干杯
约翰
我做了一个简单的例子,希望对你有帮助:
// This is you popover's class
@objc protocol CurrencySelectedDelegate {
func currencySelected(currName: String)
}
class MyPopOverController: UIViewController {
weak var delegate: CurrencySelectedDelegate?
@IBAction func readyButtonPressed(sender: AnyObject) {
// Do what you want
delegate?.currencySelected("Euro/Dollar etc....")
// close popover
}
}
// ViewController
class ViewController: UIViewController, CurrencySelectedDelegate {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "mySegue" { // your identifier here
let controller = segue.destinationViewController as! MyPopOverController
controller.delegate = self
}
}
}
请记住,只需在 ViewController 中声明 currencySelected 函数即可。