Xcode: ViewController не показывает .view или addSubview: методы - PullRequest
0 голосов
/ 28 октября 2011

Я создал два ViewControllers (Xcode 4 => Раскадровка).После этого я создал два UIViewSubclasses, которые называются PlayOutControlViewController.h и TVOutViewController.h.

Я хочу отобразить видео на внешнем дисплее, поэтому я попробовал следующее:

(добавлена ​​MediaPlayer.framework, Изменил класс моих UIViewSubclasses на PlayOut ... и TVOut ... - Controller.h)

PlayoutViewController.m

[TVOutViewController.view addSubview: MediaPlayer.view];
//Got Error: Property view not found on object of type TVOutViewController

[TVOutViewController addSubview: MediaPlayer.view]; //Got an Error
//Got Error: No known class method for selector addSubview

Извините, я знаю, что означают ошибки, но не как их исправить.

Заранее спасибо!

PS Я в PlayoutViewController.m, где:

[self.view addSubview: (anyUIView)];
//works

//and

[PlayoutViewController.view addSubview: (anyUIView)];
//won't work.

... Спасибо!

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Спасибо, пока.

Мой TVOutViewController является подклассом UIViewController, как описано здесь:

@interface TVOutViewController : UIViewController {    }

Я добавил UIView в TVOutViewController в InterfaceBuilder. Должен ли я сделать что-то еще, чтобы иметь возможность сделать, как:

[self.view addSubview: AnyUIView];

Второй вопрос:

Если я объявлю метод в TVOutViewController.m, например:

+(void)addSubviewMethod:(id)sender { [self.view addSubview: AnyUIView]; }

Почему я не могу вызвать его в PlayoutControlViewController.m через

[TVOutViewController addSubviewMethod];

Я добавил

#import "TVOutViewController.h";

в файл PlayOutViewController.m.

Спасибо всем заранее!

OK решено:

Вы были на правильном пути:

Я забыл инициализировать объект. Теперь это работает как шарм!

TVOutViewController *MoviePlayerView = [[TVOutViewController alloc] init];
[MoviePlayerView.view addSubview:moviePlayer.view];
1 голос
/ 28 октября 2011

Класс и его экземпляры - это разные вещи.

self.view работает, потому что экземпляры класса PlayoutViewController имеют свойство view.

PlayoutViewController.view нет, потому что сам объект класса не имеет этого свойства. То же самое относится к TVOutViewController - вы должны вызывать экземпляр, а не сам класс.

...