Хорошо, в ответах, которые даны здесь, довольно много путаницы ...
Во-первых, вы правы, что не звоните [super loadView];
, см. - (void)loadView
:
Если вы переопределите этот метод для создания своих представлений вручную, вы должны сделать это и назначить корневое представление вашей иерархии свойству представления.(Представления, которые вы создаете, должны быть уникальными экземплярами и не должны использоваться совместно с любым другим объектом контроллера представления.) Ваша пользовательская реализация этого метода не должна вызывать super.
Если вы действительно хотите использовать loadView
(т. е. создавая ваше представление программно, а не из NIB), тогда в вашей реализации вы должны назначить свойство view
вашего контроллера.
Кроме того, вам не нужносохраняйте свою кнопку так, как вы ее используете, потому что вы добавляете ее как подпредставление вашего основного представления (после этого оно будет принадлежать вашему основному представлению).
Исходя из этих соображений, ваш метод будет выглядетьнапример:
-(void)loadView {
CGRect frame = [[UIScreen mainScreen] applicationFrame]; // adjust to your needs
UIView *rootView = [[UIView alloc] initWithFrame:frame];
UIButton *chooseSubjectButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
chooseSubjectButton.frame = CGRectMake(15.0f, 205.0f, 296.0f, 51.0f);
[chooseSubjectButton addTarget:self action:@selector(chooseSubject) forControlEvents:UIControlEventTouchUpInside];
[rootView addSubview:chooseSubjectButton];
self.view = rootView;
[rootView release];
}
Конечно, если вы используете NIB для определения своего корневого представления, вам необходимо переопределить -viewDidLoad:
для дополнительной настройки.
Надеюсь, это поможет.