【问题标题】:Dynamiclly creating View in iOS在 iOS 中动态创建视图
【发布时间】:2012-04-20 12:25:58
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c ios uiview uiviewcontroller


    【解决方案1】:

    替换

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

    [self.view addSubview:testView.view];
    

    【讨论】:

      【解决方案2】:

      使用此代码...

      [self.view addSubview:testView.view];
      

      希望对你有帮助...

      【讨论】:

        【解决方案3】:

        你所做的是将你的 ViewController 设置为视图,而不是真正的视图

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

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

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

        【讨论】:

          【解决方案4】:

          您可以在下面加载两种类型的 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];
          

          谢谢..!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-24
            相关资源
            最近更新 更多