3

インターフェイス ビルダーに不満を感じすぎて、コードでビュー コントローラーを作成しようとしています。ウィンドウをセットアップし、ナビゲーションコントローラーを作成して、ルートビューコントローラーとして追加することができました...

ボタンの追加とターゲットの設定をどこから始めるべきかよくわかりません...

それを行うためのコードを UIViewController のサブクラスに配置する必要がありますか、それとも他の場所が良いでしょうか?

また、それを行ったら...自動レイアウトの制約を配置するのに最適な場所はどこですか?

どんな助けでも大歓迎です。

4

3 に答える 3

4

各View Controllerサブクラスは、独自のボタン、コントロール、サブビューなどを作成して解放する必要があります.

この UIViewControllerメソッドをオーバーライドすることで、すべてのView Controllerの設定を行うことができます

- (void)viewDidLoad
{
   [super viewDidLoad];
   ...
   UIButton* newButton = [UIButton buttonWithType:...];
   // other button config (including constraints)
   [self addSubview:newButton];
   ...
   // create and setup other subviews
}
于 2013-08-22T23:08:42.123 に答える
2

各View Controllerは、拡張する独自のカスタムクラスUIViewController(またはUITableViewControllerなど)である必要があります。このようにして、各View Controllerのすべてのロジックが独自のクラスに含まれています。

私がしていることは、View Controller に必要なすべてのサブビューを作成、セットアップ、および追加するためにオーバーライドviewDidLoad( を呼び出すことを忘れないでください) です。[super viewDidLoad];これは、各サブビューの制約またはマスクの自動サイズ変更を設定する場所でもあります。

カスタム レイアウトを行う必要がある場合は、viewWillLayoutSubviewsメソッドで行います。

于 2013-08-22T23:09:02.643 に答える
0

私を助けてくれてありがとう。この件についてアップルのドキュメントを検索していたところ、アップルが のloadViewメソッドをオーバーライドしUIViewControllerてビュー全体をセットアップすることを望んでいることがわかりました。彼らは、制約の設定についても何かを言いました。関数をオーバーライドしないと空のビューが表示されるため、ロードされたビューでそれらを設定できると思いますが、私は安全で、アップルがそうするように言う方法でそれを行うと思います。

時間を無駄にしてしまい申し訳ありません。質問する前にもっと調べるべきでした。

- (void)loadView
{
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
    UIView *contentView = [[UIView alloc] initWithFrame:applicationFrame];
    contentView.backgroundColor = [UIColor blackColor];
    self.view = contentView;

    levelView = [[LevelView alloc] initWithFrame:applicationFrame viewController:self];
    [self.view addSubview:levelView];
}
于 2013-08-23T00:20:27.997 に答える