2

NewGameとPlayersの2つのビューを持つマルチビューアプリを開始しています。私はすべてを適切に設定していると思いましたが、明らかにそうではありませんでした。

MainViewController.h

#import <UIKit/UIKit.h>

@class NewGame; @class Players;

@interface MainViewController : UIViewController {
    IBOutlet NewGame *newGameController;
    IBOutlet Players *playersController;
}

-(IBAction) loadNewGame:(id)sender;
-(IBAction) loadPlayers:(id)sender;

-(void) clearView;

@end

MainViewController.m

#import "MainViewController.h"
#import "NewGame.h"
#import "Players.h"

@implementation MainViewController

-(IBAction) loadNewGame:(id)sender {
    [self clearView];
    [self.view insertSubview:newGameController atIndex:0];
}

-(IBAction) loadPlayers:(id)sender {
    [self clearView];
    [self.view insertSubview:playersController atIndex:0];
}

-(void) clearView {
    if (newGameController.view.superview) {
        [newGameController.view removeFromSuperview];
    } else if (playersController.view.superview) {
        [playersController.view removeFromSuperview];
    }
}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [self loadNewGame:nil];
    [super viewDidLoad];
}

いくつかの画像...

http://i.stack.imgur.com/GwXMa.png http://i.stack.imgur.com/XHktH.png

4

3 に答える 3

1

ビューは、画面に表示されるものを表すオブジェクトです。 ビュー コントローラーは、これらのビューに関連するアプリケーション ロジックを実行するオブジェクトです。ビュー階層は、ビューのコレクションです。実際にビューであるかのように、View Controller をビュー階層に追加しようとしています。

大まかに言えば、アプリの「画面」ごとに 1 つのビュー コントローラーが必要です。このView Controllerは、任意の数のビューを管理できます。そのメイン ビューには、そのviewプロパティからアクセスできます。

アプリケーションを動作させるための簡単な修正は、View Controller 自体ではなく、View Controller のメイン ビューを追加することです。たとえば、次のようになります。

[self.view insertSubview:playersController atIndex:0];

...次のようになります。

[self.view insertSubview:playersController.view atIndex:0];

とは言っても、これは長期的には良い解決策ではありません。View Controller から View Controller への遷移を整理する、より構造化された方法を検討する必要があります。 UINavigationController初心者には良いオプションです。

于 2011-03-06T02:31:32.863 に答える
0

playerControllerはビューコントローラーだと思います。それから加えて

[self.view addSubview: playerController.view];

または、そうでない場合は、UIView用にサブクラス化します

于 2011-03-06T02:27:36.887 に答える
0

NewGameとPlayersはどちらもUIViewをサブクラス化する必要があります。UIViewではなくViewControllerの場合は、newGameControllerの代わりにnewGameController.viewを使用する必要があります。

于 2011-03-06T02:30:40.313 に答える