3

これは私の最初の iOS プロジェクトです。XCode アプリケーションの codeschool で iOS を試す のチュートリアルに従っているだけです。

メソッドにボタンを追加しました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が「メッセージを送信する」方法を誤解しているだけかもしれません。

追加情報が役立つ場合は、お知らせください。助けてくれてありがとう:)

編集

これはストーリーボードと関係がありますか?絵コンテモードですが、GUI を使用してボタンを追加したことはありません

4

4 に答える 4

1

... self.viewController.view = view; ...

viewDidLoad が呼び出されない原因となる viewDidLoad の前に、viewController のビューを設定しないでください。ビューはviewDidLoadで設定する必要があり、viewControllerはそのビューを自動的に管理します。

于 2015-11-25T03:23:44.037 に答える
0

この問題があり、AppDelegate の didFinishLaunchingWithOptions 関数にコードを追加すると、initWithCoder 関数が呼び出されました。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];(NSDictionary *)launchOptions
    UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MyStoryboardName" bundle:nil];
    UIViewController *initViewController = [storyboard instantiateInitialViewController];
    [self.window setRootViewController:initViewController];
于 2014-04-07T17:24:30.467 に答える