我想使用启动segue的按钮的标题作为出现的视图的标题。有没有办法在prepareForSegue中获取该按钮?否则,我必须为这一件事声明一个不必要的IBOutlet。
我使用的是最新的XCode,6 beta 7和iOS 8(以及Swift,虽然这都是可可触摸,所以在ObjC中答案很好)。
答案 0 :(得分:4)
prepareForSegue具有以下签名:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
sender
将是您用户点击的UIButton。
答案 1 :(得分:0)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "MySegue" {
if let myVC = segue.destinationViewController as? MyViewController {
if let usender:AnyObject = sender {
if let button = usender as? UIButton {
myVC.title = button.titleForState(.Normal)
}
}
}
}
}
然后我注意到新签名有AnyObject!,所以我将其更改为:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "MySegue" {
if let myVC = segue.destinationViewController as? MyViewController {
if let button = sender as? UIButton {
myVC.title = button.titleForState(.Normal)
}
}
}
}