Ios 如何从segue或目标视图控制器中访问执行segue的源视图?

Ios 如何从segue或目标视图控制器中访问执行segue的源视图?,ios,swift,segue,Ios,Swift,Segue,我有一个自定义的ContainerSegue继承自UIStoryboardSegue。在perform()方法中,我需要访问执行当前序列的ui视图。我该怎么做?可能吗 换句话说,我需要访问perform()方法中的发送方 segue类通常不跟踪sender,但由于您定义了名为ContainerSegue的自定义segue类,因此可以向其添加sender属性: class ContainerSegue: UIStoryboardSegue { // Add this property to

我有一个自定义的
ContainerSegue
继承自
UIStoryboardSegue
。在
perform()
方法中,我需要访问执行当前序列的
ui视图。我该怎么做?可能吗

换句话说,我需要访问
perform()
方法中的发送方


segue
类通常不跟踪
sender
,但由于您定义了名为
ContainerSegue
的自定义
segue
类,因此可以向其添加
sender
属性:

class ContainerSegue: UIStoryboardSegue {
    // Add this property to hold the sender
    var sender: AnyObject?

    override func perform() {
        if let button = sender as? UIButton, title = button.currentTitle {
            print("button title is \(title)")
        }

        // Add remainder of perform code here
    }
}
然后在
prepareforsgue
中设置:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let containerSegue = segue as? ContainerSegue {
        containerSegue.sender = sender
    }
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let dvc = segue.destinationViewController as? MyDestinationVC {
        dvc.sender = sender
    }
}

以类似的方式,如果要访问
destinationViewController
中的
sender
,请将
sender
属性添加到
destinationViewController
中,并在
prepareForSegue
中进行设置:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let containerSegue = segue as? ContainerSegue {
        containerSegue.sender = sender
    }
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let dvc = segue.destinationViewController as? MyDestinationVC {
        dvc.sender = sender
    }
}

segue
类通常不跟踪
sender
,但由于您定义了名为
ContainerSegue
的自定义
segue
类,因此可以向其添加
sender
属性:

class ContainerSegue: UIStoryboardSegue {
    // Add this property to hold the sender
    var sender: AnyObject?

    override func perform() {
        if let button = sender as? UIButton, title = button.currentTitle {
            print("button title is \(title)")
        }

        // Add remainder of perform code here
    }
}
然后在
prepareforsgue
中设置:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let containerSegue = segue as? ContainerSegue {
        containerSegue.sender = sender
    }
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let dvc = segue.destinationViewController as? MyDestinationVC {
        dvc.sender = sender
    }
}

以类似的方式,如果要访问
destinationViewController
中的
sender
,请将
sender
属性添加到
destinationViewController
中,并在
prepareForSegue
中进行设置:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let containerSegue = segue as? ContainerSegue {
        containerSegue.sender = sender
    }
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let dvc = segue.destinationViewController as? MyDestinationVC {
        dvc.sender = sender
    }
}

如果这是某个模态表示不,它不是这个:(因此我们需要了解更多,您可以始终在prepareForSegue方法中设置控制器)如果这是某个模态表示不,它不是这个:(因此我们需要了解更多,您可以始终在prepareForSegue方法中设置控制器