我遇到了一个通用应用程序的问题,该应用程序最初是为iPhone设计的,我使用了3rd party类作为iPhone的弹出窗口。在iPad上,我想使用Apple提供的弹出窗口。我的问题是编写我的代码,以便已经在包含弹出窗口的类的viewDidLoad
中初始化了弹出窗口的View Controller,并且在进行排序时-分配了该类的新实例。有没有办法将已经在bckMusicPlayer
中分配的prepareForSegue
传递给它?
@property(nonatomic,strong)MJDetailViewController * bckMusicPlayer; //在调用prepareForSegue时已经初始化。我想针对这个对象。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"prepare for segue");
if ([segue.identifier isEqualToString:@"Show iPad Player"]) {
if ([segue isKindOfClass:[MJDetailViewController class]]) {
}
}
}
编辑:我通过bckMusicPlayer将播放器(AVAudioPlayer)对象传递给它
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"Show iPad Player"]) {
NSLog(@"class: %@",[segue class]);
if ([segue.destinationViewController isKindOfClass:[MJDetailViewController class]]) {
NSLog(@"prepare for segue");
MJDetailViewController *destinationVC = segue.destinationViewController;
destinationVC.player = self.bckMusicPlayer.player;
}
}
}
最佳答案
你不能反过来吗?为什么必须创建MJDetailViewController
的实例?让segue为您完成任务,然后在prepareForSegue中:获取目标控制器并将其传递给所需的数据。不要打架。
或者,您可以覆盖:
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
并防止segue瞄准
MJDetailViewController
,并手动将其转移到控制器并显示出来。关于ios - 与已经初始化的View Controller隔离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17975610/