Это мой первый проект iOS. Я просто слежу за учебником от Try iOS в учебном кодексе в моем приложении XCode.viewDidLoad не вызван для rootViewController
Я добавил кнопку в свой метод viewDidLoad
. Я не думаю, что это то, где он будет добавляться нормально, но он все равно должен работать. Проблема в том, что метод никогда не вызывается. Вот мой код:
AppDelegate.m:
#import "AppDelegate.h"
#import "ViewController.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Set window size & background color
CGRect viewRect = [[UIScreen mainScreen] bounds];
self.window = [[UIWindow alloc] initWithFrame:viewRect];
self.viewController = [[ViewController alloc] init];
UIView *view = [[UIView alloc] initWithFrame:viewRect];
view.backgroundColor = [UIColor yellowColor];
self.viewController.view = view;
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
NSLog(@"Screen is %f tall and %f wide", viewRect.size.height, viewRect.size.width);
return YES;
}...
AppDelegate.h:
#import <UIKit/UIKit.h>
@class ViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ViewController *viewController;
@end
ViewController.m:
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor blueColor];
UIButton *firstButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
firstButton.frame = CGRectMake(100, 100, 100, 44);
[firstButton setTitle:@"Don't Click!" forState:UIControlStateNormal];
[self.view addSubview:firstButton];
}...
Когда приложение запущено и работает, мой фон остается желтым, и кнопки не видно.
Пройдя через приложение, didFinishLaunchingWithOptions:
показов, как я и ожидал. Когда представление инициализируется, я ожидаю, что viewDidLoad будет запущен. Я могу просто не понимать, как C «отправляет сообщения».
Если какая-либо дополнительная информация может помочь, пожалуйста, сообщите мне. Спасибо за любую помощь :)
EDIT
ли это что-то делать с раскадровки? Я в режиме раскадровки, но я никогда не добавлял никаких кнопок с помощью GUI.
Спасибо, я просто сделаю это в будущем.Я пытался следовать их примерам, но они, возможно, были отредактированы, чтобы сделать класс более удобным. – MrCarder
@MrCarder, странный класс. Редактируя их материал, чтобы он был неправильным ... Вы должны получить хороший учебник (легко найти в Google, я бы предложил Ray Wenderlich или App Coda), чтобы понять, как это сделать (я не хочу сказать " правильный путь ", но вы знаете, что я имею в виду) – CaptJak
Чтобы добавить к тому, что написал @CaptJak: я обнаружил, что трудно исправить соблазн сделать что-то вручную вручную - это не отличная идея. Используйте Interface Builder и соглашения и рабочие процессы Apple каждый раз, когда вы можете, а не подключайте их вручную, ради этого; это не только экономит ваше время, но, что более важно, вы не оказываетесь в непреднамеренной борьбе против структур и соглашений программирования Objective-C/Cocoa/Xcode, что является основной проблемой в приведенном выше примере кода. – davidf2281