我遇到了一个通用应用程序的问题,该应用程序最初是为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/

10-11 00:32