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 でコメントアウトされた行のいくつかを見つけました。しかし、これらのどれも の値を設定しませんtest
。PopupViewController *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 のために何か別のことをする必要がありますか?