この行を使用できるように、コードからストーリーボードにアクセスしようとしています。
DetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"detail"];
マップビューとリストビューで使用していますが、別の場所で使用したいと考えています。問題は、このビューが別のビューのサブビューであるということです。
次のように設定されています。
thisBigViewは、ストーリーボードに追加したビューです。ストーリーボードではThisBigViewController
、そのビューに別のビューを追加しました。これをthisSmallViewと呼びましょう。クラスはに設定されThisSmallView
ます。
ThisSmallViewは、ビュー上で動的にボタンを生成するカスタムビューです。これらのボタンは、次のアクションを呼び出します。
-(void) radarEventClick:(UIButton *)sender{
SingletonManager *sharedManager = [SingletonManager sharedManager];
DetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"detail"]; // PROBLEM 1
Event *a;
for(int i = 0; i < [sharedManager.eventsManager count]; i++){
if(sender.tag == ((Event*)([sharedManager.eventsManager objectAtIndex:i])).id_nr){
a = [sharedManager.eventsManager objectAtIndex:i];
break;
}
}
[detail setEvent:a];
[self.navigationController pushViewController:detail animated:YES]; // PROBLEM 2
}
これは、mapviewcontrollerでannotationdisclosureクリックに応答するために使用しているコードであり、ここで使用したいのですが、2つの問題があります。
問題1:thisSmallViewはanotherviewのサブビューであるため、ストーリーボードに直接アクセスできず、そのアクセスを取得する方法がわかりません。
問題2:thisBigViewはに埋め込まれてnavigationcontroller
いますが、thisBigViewにアクセスするユーザーがわからないため、にアクセスできませんnavigationcontroller
。
(問題2を解決できれば、自動的に問題1を解決できると思いますか?)
-編集:私が試したこと-
DetailViewController *detail = [self.superview.storyboard instantiateViewControllerWithIdentifier:@"detail"];
しかし、「UIView*タイプのオブジェクトにプロパティストーリーボードが見つかりません」というメッセージが表示されます。