Ios 切换到´;已经初始化了

Ios 切换到´;已经初始化了,ios,ipad,uiviewcontroller,uipopovercontroller,Ios,Ipad,Uiviewcontroller,Uipopovercontroller,我在iPhone的初始设计中遇到了一个通用应用程序的问题,我在iPhone上使用了一个第三方类作为弹出窗口。在iPad上,我想使用苹果提供的弹出窗口。我的问题是,编写代码时,弹出窗口的视图控制器已经在包含弹出窗口的类的viewdiload中初始化,并且在seguing时,会分配该类的新实例。是否有方法将已在prepareforsgue中分配的bckmusiclayer传递给它 @属性(非原子,强)MJDetailViewController*bckmusicLayer//调用prepareFor

我在iPhone的初始设计中遇到了一个通用应用程序的问题,我在iPhone上使用了一个第三方类作为弹出窗口。在iPad上,我想使用苹果提供的弹出窗口。我的问题是,编写代码时,弹出窗口的视图控制器已经在包含弹出窗口的类的
viewdiload
中初始化,并且在seguing时,会分配该类的新实例。是否有方法将已在
prepareforsgue
中分配的
bckmusiclayer
传递给它

@属性(非原子,强)MJDetailViewController*bckmusicLayer//调用prepareForSegue get时已初始化。我想转到这个物体

编辑:我从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;
        }

    }

}不,你不能那样做。分段(而不是展开)始终实例化新控制器。您或者不需要在viewDidLoad中实例化它,或者在代码中移动到新控制器,而不是使用segue

你不能走另一条路吗?为什么必须创建
MJDetailViewController
的实例?让segue为您完成,然后在prepareforsgue中:抓取目标控制器并将所需数据传递给它。不要与框架抗争

或者,您可以覆盖:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender

如果segue的目标是
MJDetailViewController
,请阻止该segue,并手动传输到您的控制器并演示它。

您是否有任何关于如何执行该操作的链接-手动传输到控制器?@TomLilletveit您的意思是什么?使用超控器?如果你在Bing或其他网站上搜索,你会发现很多例子。请看我更新的问题!它似乎工作得很好,虽然它是一个黑客,但这是因为我懒惰,把应该在模型中的东西放到视图控制器中。你完全按照我的建议做了。阅读我的回答:“然后在准备阶段:抓取目标控制器并将所需数据传递给它”
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender