1

Interface Builderで作成されたいくつかのボタンを持つViewControllerがあります。最初のボタンは IB にリンクされたポップオーバーを表示します。これは UINavigationController にリンクされており、その下に のクラスを持つ TableView がありPopupViewControllerます。

2 番目のボタンにはアクションの設定がgoToCategoryあり、それをクリックすると、PopupViewController

ViewController.m
//go to category
-(IBAction)goToCategory:(id)sender{
    NSLog(@"GO TO CAT");
    //PopupViewController *popupVC = [self.storyboard instantiateViewControllerWithIdentifier:@"popoverVC"];
    //popupVC.currentLevel = 1;
    [self performSegueWithIdentifier:@"popoverSegue" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSLog(@"seg1");
    if ([[segue identifier] isEqualToString:@"popoverSegue"]){
        //PopupViewController *popupVC = (PopupViewController *)[[segue destinationViewController] visibleViewController];
        //PopupViewController *popupVC = [segue destinationViewController];
        PopupViewController *popupVC=[[[segue destinationViewController]viewControllers]objectAtIndex:0];
        popupVC.test = @"just a test";
        NSLog(@"seg2");
    }
}

PopupViewController.h
@property (nonatomic, strong) NSString *test;

PopupViewController.m
@synthesize test;
-(void)viewDidLoad{
    NSLog(@"test: %@", test); //returns test: (null)
}

私は SO で多くの回答を見つけたので、私の prepareForSegue でコメントアウトされた行のいくつかを見つけました。しかし、これらのどれも の値を設定しませんtestPopupViewController *popupVC = [segue destinationViewController];UINavigationController を参照しているためにエラーがスローされるため、それをそのまま使用することはできませんが、私が見た多くの回答でそれを行う方法のようです。しかし、どの方法を試しても、出力は常に null ですか?

アップデート:

PopupViewController *popupVC = (PopupViewController *)[[segue destinationViewController] visibleViewController];上記からPopupViewController *popupVC=[[[segue destinationViewController]viewControllers]objectAtIndex:0];prepareForSegue両方とも6.1シミュレーターで動作します。私の iPad の iOS は 5.1.1 で、動作していません。iOS 5 のために何か別のことをする必要がありますか?

4

1 に答える 1

0

これを試して

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"seg1");
    if ([[segue identifier] isEqualToString:@"popoverSegue"])
    {
        UINavigationController *navController = (UINavigationController*)[segue destinationViewController];
        PopupViewController *popupVC = [navController topViewController];
        popupVC.test = @"just a test";
        NSLog(@"seg2");
    }
}
于 2013-02-19T08:58:42.030 に答える