У меня есть массив булевых (soundArray), который изменяется на основе ввода пользователем. Поэтому он принадлежит основному UIView, с которым пользователь взаимодействует. Между тем, в другом отдельном контроллере (GestureController) мне нужен доступ к этому soundArray, поэтому я могу передать его как параметр в вызове метода.Передача ручек между ViewController и View
Я уверен, что ViewController не должен выкапывать свойства UIView, которым он не владеет (правильный MVC), поэтому я создал другой указатель на soundArray в ViewController (MusicGridController), который владеет основной UIView (MusicGridView).
В GestureController, у меня есть следующий код:
// instantiate the sound thread
NSArray *soundArrayPointers = [NSArray arrayWithObjects:self.musicGridViewController.soundArray, nil];
[NSThread detachNewThreadSelector:@selector(metronome:) toTarget:[MusicThread class] withObject:soundArrayPointers];
(в конце концов, у меня будет больше soundArrays в этом массиве).
Теперь в MusicGridController, мне нужно установить указатель на SoundArray в UIView MusicGridView ... так что я сделал это:
- (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, но он сделал ошибку, и я не понимаю, почему. Поэтому мой вопрос: правильная ли реализация? Как я могу получить от одного viewController к свойству данного UIView?