0

我有一个只有一个视图的项目。我正在以编程方式在其上绘制所有内容。因此,当我想向我的项目添加另一个视图(屏幕)时,我创建了一个继承自 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]: unrecognized selector sent to instance 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

这显然会崩溃。假设您在名为 view 的头文件中声明了一个视图变量,请使用

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

您可以在下面加载两种类型的 uiviewcontroller 加载:

[self.view addSubview:testView.view];

(或者)

使用以下代码的presentmodalviewcontroller:

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

关闭模态视图控制器下面的代码:

[self dismissModalViewControllerAnimated:YES];

谢谢..!

于 2012-04-20T12:32:43.520 回答