0

1つのビューを持つプロジェクトがあります。私はそれにすべてをプログラムで描いています。したがって、プロジェクトに別のビュー(画面)を追加する場合は、UIViewControllerクラスを継承し、メソッドを実装するクラスを作成します。

- (void)viewDidLoad

次に、元のビューからこのビューをロードしたいので、次のようにします。

ViewController.h

#import <UIKit/UIKit.h>
#import "TestViewControllerClass.h"

@interface ViewController : UIViewController <UITableViewDataSource> {
}

@property (strong,nonatomic) TestViewControllerClass *testView;

@end

ViewController.m

@implementation ViewController

@synthesize testView;

- (void)viewDidLoad
{
    [super viewDidLoad];

    testView = [[TestViewControllerClass alloc] init];
    [self.view addSubview:testView]; //crash here

}

そして、私のTestViewControllerClass.hで

#import <UIKit/UIKit.h>

@interface TestViewControllerClass : UIViewController

@end

そしてTestViewControllerClass.m

- (void)viewDidLoad
{
    [super viewDidLoad];
}

メソッドwiewDidLoadが実行されるかどうかを確認するために、ブレークポイントを設定しましたが、何も起こりませんでした。実際、私のアプリはクラッシュします(コードのどこにコメントを入れました)。

クラッシュすると、次のように表示されます。-[TestViewControllerClass superview]:認識されないセレクターがインスタンス0x683aca0に送信されました

4

4 に答える 4

3

交換

[self.view addSubview:testView]; //crash here

[self.view addSubview:testView.view];
于 2012-04-20T12:27:47.357 に答える
2

このコードを使用してください...

[self.view addSubview:testView.view];

願っています、これはあなたを助けるでしょう...

于 2012-04-20T12:28:59.447 に答える
2

あなたがしているのは、ViewControllerを実際のビューではなくビューとして設定することです

testView = [[TestViewControllerClass alloc] init];
    [self.view addSubview:testView]; //crash here

これは明らかにクラッシュします。ビューと呼ばれるヘッダーファイルで宣言されたビュー変数があると仮定して、

testView = [[TestViewControllerClass alloc] init];
     [self.view addSubview:testView.view];
于 2012-04-20T12:32:53.033 に答える
0

以下のuiviewcontrollerロード用に2つのタイプをロードできます。

[self.view addSubview:testView.view];

(また)

以下のコードでpresentmodalviewcontrollerを使用します。

    testView *popupView = [[testView alloc] initWithNibName:@"testView" bundle:nil];
    popupView.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:popupView animated:YES];

コードの下のモーダルビューcntrollerを削除します。

[self dismissModalViewControllerAnimated:YES];

ありがとう..!

于 2012-04-20T12:32:43.520 に答える