Я пытался понять контроллеры просмотра и представления, и даже после просмотра некоторых классов в iTunesU у меня все еще есть проблемы с их программным обеспечением. Я надеюсь, кто-то может немного разъяснить.Нужна помощь в понимании программно созданного UIView и UIViewController
Так что я пытаюсь создать UIViewController, который, в свою очередь, создает его представление.
Программа разбита на следующие классы: ProgramNameAppDelegate.h и .m ApplicationRootViewController.h и .m
С AppDelegate, я создаю UIWindow и UIViewController. Частичный код выглядит следующим образом:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
_window = [ [UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if (!_window)
{
[self release];
return NO;
}
_rootViewController = [ [ApplicationRootViewController alloc] init];
if (!_rootViewController)
{
NSLog(@"No _rootViewController");
[self release];
return NO;
}
[_window addSubview:[_rootViewController view]];
[_window makeKeyAndVisible];
return YES;
}
В ApplicationRootViewController я вызываю init. Мой UIView создан в loadView как таковой:
- (void)loadView
{
NSLog(@"In loadView");
[super loadView];
CGRect _frame = [[UIScreen mainScreen] applicationFrame];
UIView* _rootView = [[UIView alloc] initWithFrame:_frame];
[_rootView setBackgroundColor:[UIColor redColor]];
self.view = _rootView;
return;
}
Проблема у меня, видимо, программа создает вид, однако, никогда не показывая вид, что я создал, пока приложение не уйдет в отставку активно. Как только я выхожу из приложения и вернусь, вид есть. Я пробовал несколько других вещей, но он всегда ведет себя одинаково.
В конечном итоге я хотел бы, чтобы контроллер создал представление из подкласса UIView.h и .m-файла.
Спасибо,
Кевин
Есть что-то, что вы не разместили или не упомянули, потому что ваш код работает хорошо для меня. Кстати, у вас есть утечка здесь: self.view = _rootView; вам нужно освободить _rootView – Max
Да, я поймал утечку памяти. Остальная часть кода - довольно консервированный материал. Я исправил проблему, но я до сих пор не знаю, что происходит. Я работал в новейшем предварительном просмотре XCode (хотя я думаю, что это не имело к этому отношения). Я отказался от кода и переписал его в текущем выпуске XCode, и теперь все работает так, как должно. Я провел день, вытаскивая волосы. Спасибо, что посмотрели на него. – Kevin
Где и когда вызывается запрос loadView? – hotpaw2