0

2 つのビュー コントローラーがあり、それぞれにラベルが付いた UIView があります。ボタンを押したときに、最初のView Controllerからのビューを2番目のビューに設定したい。これを行うと、2 番目のビュー コントローラーがビューを読み込まず、2 番目のビューの UIView へのポインターが null になるため、最初のビューでは何もできません。私のsecondViewNewは私のsecondViewのプロパティであるため、私がやっているのはこれだけです。ストーリーボードでこれを行うことは可能ですか?[self.storyboard instantiateViewControllerWithIdentifier:@"beaconContentID"] メソッドも試しました。このプロジェクトでは、secondViewNew も UIView であり、関連するすべてのクラスをインポートしました。

SecondViewController *secondViewControllerInstance =  [[SecondViewController alloc] init];

UIView *test = secondViewControllerInstance.secondViewNew;

NSLog(@"%@",test);
4

1 に答える 1

0

あなたの secondViewNew は alloc/init の直後にロードされません。

awakeFromNibメソッドが2番目のView Controllerで呼び出された後にのみ、インスタンス化されることが保証されます。

何を達成しようとしているのかはわかりませんが、ビューがビューコントローラーのいずれかに「属していない」場合は、ビューをビューコントローラーから分離する必要があるようです。UIView をサブクラス化し、関連する nib を作成するだけです。このようにして、必要なときにいつでもビューをインスタンス化できます。

手順は次のとおりです。

  • UIView の新しいサブクラス、つまり CustomView を作成します
  • 新しいnibファイル、つまりCustomView.xibを作成します
  • nib ファイルにビューを追加し、そのカスタム クラスを CustomView に設定し、必要に応じてサブビューを追加します。

最後に、カスタム ビューを使用するビュー コントローラーで次のようにします。

CustomView *customView = [[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil] objectAtIndex:0];
于 2012-08-15T23:14:35.947 に答える