如何获得在prepareForSegue中启动segue的按钮?

时间:2014-09-09 00:43:32

标签: ios objective-c cocoa-touch segue

我想使用启动segue的按钮的标题作为出现的视图的标题。有没有办法在prepareForSegue中获取该按钮?否则,我必须为这一件事声明一个不必要的IBOutlet。

我使用的是最新的XCode,6 beta 7和iOS 8(以及Swift,虽然这都是可可触摸,所以在ObjC中答案很好)。

2 个答案:

答案 0 :(得分:4)

prepareForSegue具有以下签名:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

sender将是您用户点击的UIButton。

答案 1 :(得分:0)

莎的回答是正确的。这是我在Swift中工作的代码:

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)
            }

        }
    }
}