roc*_*101 2 pushviewcontroller ios swift
我正在Swift中开发一个应用程序,它在一个主旨中告诉人们各种货币的比特币价格.要选择货币,用户可以从具有UITableView的视图控制器中的列表中进行选择.这是currencyViewController,它是从我的主屏幕viewController呈现的.
我想要发生的是,当用户解雇currencyViewController时,它会将一个字符串传递给主viewController中的UIButton.
这是应该传递数据的prepareForSegue函数:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "presentCurrency") {
currencySelector.setTitle("\currencySelected", forState: UIControlState.Normal)
}
}
Run Code Online (Sandbox Code Playgroud)
CurrencySelector是主viewController中的UIButton,而currencySelected是第二个视图控制器currencyViewController中的变量.
它给出错误"文字中无效的转义序列"
所以,我把它缩小到两个问题之一:
来自viewController的变量无法从currencyViewController中"看到".如果是这样,我如何从CurrencyViewController修改CurrencySelector的文本?
出于某种原因,当用户退出推送的CurrencyViewControler时,不会调用prepareForSegue.
这里发生了什么?谢谢,道歉 - 我只是一个快速的新手.
Tia*_*ira 14
2 - 当你通过segue推送一个新的视图控制器时调用"prepareForSegue",但是当你解除它时不会.解雇时不会被称为segue.
1 - 执行此操作的好方法是委托模式.
因此,主视图控制器将是currencyViewController的委托,并在该控制器被关闭时收到消息.
在currencyViewController文件的开头,您准备委托:
protocol CurrencyViewControllerDelegate {
func currencyViewControllerDidSelect(value: String)
}
Run Code Online (Sandbox Code Playgroud)
并在currencyViewController中添加一个变量:
var delegate : CurrencyViewControllerDelegate?
Run Code Online (Sandbox Code Playgroud)
现在,mainViewController必须符合该协议并回答该函数:
class MainViewController : UIViewController, CurrencyViewControllerDelegate {
//...
func currencyViewControllerDidSelect(value: String) {
//do your stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
一切都准备好了.最后一步,在prepareForSegue(MainViewController)中,您将设置currencyViewController的委托:
var currencyVC = segue.destinationViewController as CurrencyViewController
currencyVC.delegate = self;
Run Code Online (Sandbox Code Playgroud)
当用户在currencyViewController中选择值时,只需在委托中调用该函数:
self.delegate?.currencyViewControllerDidSelect("stuff")
Run Code Online (Sandbox Code Playgroud)
有点复杂,但它是一个非常有用的模式:)这是一个很好的教程,如果你想要更多的信息:
http://www.raywenderlich.com/75289/swift-tutorial-part-3-tuples-protocols-delegates-table-views
归档时间: |
|
查看次数: |
6487 次 |
最近记录: |