Пользовательский подкласс UIView как свойство UIViewController

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

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

Вот краткое описание:

  • Главный контроллер имеет собственное представление и загружается нормально.
  • Затем я могу добавить этот подкласс 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];

}

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


person bitcruncher    schedule 09.02.2010    source источник


Ответы (1)


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

person Grant Paul    schedule 09.02.2010
comment
сын ... да, который решил это. большое большое спасибо! при выборе атрибутов свойства я учел это, но вместо этого выбрал копию. почему копирование запрещено в UIView? это особенно сбивает с толку, потому что UILabel, UIButton и т. д. также наследуются от UIView, и их можно скопировать. - person bitcruncher; 09.02.2010
comment
Если проблема решена, отметьте этот ответ как правильный и поставьте ему положительный отзыв. - person willcodejavaforfood; 09.02.2010
comment
@bitcruncher позволяет узнать, можно ли скопировать класс, если он реализует Протокол NSCopying. - person john; 19.01.2012