ユーザー入力に基づいて変更されるブール値の配列(soundArray)があります。したがって、ユーザーが操作しているメインUIViewによって所有されます。一方、別の別のコントローラー(GestureController)では、このsoundArrayにアクセスする必要があるため、メソッド呼び出しでパラメーターとして渡すことができます。
ViewControllerが所有していないUIViewのプロパティを掘り下げてはいけないと確信しているので(正しいMVC)、メインUIView(MusicGridView)を所有しているViewController(MusicGridController)にsoundArrayへの別のポインターを作成しました)。
GestureControllerには、次のコードがあります。
// instantiate the sound thread
NSArray *soundArrayPointers = [NSArray arrayWithObjects:self.musicGridViewController.soundArray, nil];
[NSThread detachNewThreadSelector:@selector(metronome:) toTarget:[MusicThread class] withObject:soundArrayPointers];
(最終的には、その配列にさらに多くのsoundArrayが含まれるようになります)。
ここで、MusicGridControllerで、UIView MusicGridViewのSoundArrayへのポインターを設定する必要があります...これを行いました:
- (void)viewDidLoad {
[super viewDidLoad];
self.view.frame = CGRectMake(20, 0, 480, 480);
MusicGridView *tempview = self.view; // this line gives me a warning that I am initializing from a distinct Objective-C type, which I don't understand.
self.soundArray = tempview.soundArray;
}
self.soundArray = self.view.soundArrayを試しましたが、エラーが発生し、理由がわかりません。だから私の質問は:これは正しい実装ですか?1つのviewControllerから特定のUIViewのプロパティに移動するにはどうすればよいですか?