2010-02-09 1 views
2

Я думал, что на самом деле у меня на руках была довольно хорошая ручка на всей модели контроллера вида, но что-то просто не имеет для меня никакого смысла. Моя основная проблема заключается в добавлении пользовательского подкласса UIView в качестве свойства подкласса UIViewController.Пользовательский подкласс UIView как свойство UIViewController

Всякий раз, когда я присваиваю этому экземпляру действительный экземпляр подкласса UIView, ничего не происходит или происходит сбой кода.

Вот краткий набросок:

  • Главный контроллер inits своей собственной точки зрения и что нагрузки в порядке.
  • я могу затем добавить UIView подкласс к основному контроллеру по инстанцировании его и addSubview:ivar т.д. Никаких проблем там ...

Однако ... если бы я хотел, чтобы этот обычай UIView как собственности ViewController, который, похоже, не работает. Может ли кто-нибудь пролить свет?

Вот краткий код:

@interface CustomUIView : UIView { } 

.

@interface MainViewController : UIViewController { 
    CustomUIView *someOtherView; 
} 

@property (nonatomic, copy) CustomUIView *someOtherView; 

...

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.view.backgroundColor = [UIColor greenColor]; // the default controller view 

    CustomUIView *tmpView = [[CustomUIView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 

    [self.view addSubview:tmpView];  // this works 

    self.someOtherView = tmpView;  // this does NOT work and 
    self.view = self.someOtherView;  // ultimately, this is what i'm after 

    [tmpView release]; 

} 

Огромное спасибо этой замечательной сообщества!

ответ

8

Вы не можете копировать UIView s. Или UIView подклассы. Вместо этого попробуйте сохранить.

+0

son of a ... yep, который решил это. большое большое спасибо! при выборе атрибутов свойств я это рассмотрел, но вместо этого выбрал копию. почему копия не разрешена на UIView? это особенно сбивает с толку, потому что UILabel, UIButton и т. д. наследуют и UIView, и их можно «скопировать». – bitcruncher

+0

Если это решение, пожалуйста, отметьте этот ответ как правильный и дайте ему ответ – willcodejavaforfood

+0

@bitcruncher, как вы знаете, если класс можно скопировать, если он реализует [протокол NSCopying] (http://developer.apple.com/ библиотека/ИОС/# документация/какао/Справка/Foundation/Протоколы/NSCopying_Protocol/Справка/reference.html). – john