【问题标题】:Objective-c Adding subViews in my controllerObjective-c 在我的控制器中添加子视图
【发布时间】:2011-03-31 14:38:54
【问题描述】:

我与委托、控制器和其他一些东西有一个应用程序。问题是我用 init 初始化控制器中的所有内容。这个初始化创建了 3 个 UIVIews(openGL、imagepickerview 和一个 MKMapView),我希望将这些视图添加到窗口中,因此它们位于另一个之上。然而,不知何故,它只绘制了 3 个中的一个,即 imagePickerView。这是代表:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.rootViewController = self.viewController;
    viewController = [[ARInvadersViewController alloc] initWithWindow:self.window];
    return YES;
}

这里是控制器:

-(id)initWithWindow:(UIWindow *)_window{
    self.window = _window;
    // ...
    // Some code here
    // ...
    [self.window addSubview:imagePickerController.view];
    [self.window addSubview:self.glView];
    [self.window addSubview:mapView];
    [self.window makeKeyAndVisible];
}

我做得好吗?

【问题讨论】:

    标签: iphone objective-c uiview subview


    【解决方案1】:

    假设您的所有视图都是单个屏幕的一部分,则在使用 viewController 设置窗口后,您无需向窗口添加任何内容。设置您的 viewController,然后在该控制器的视图上添加下一个视图。

    例如在你的AppDelegate:

    [self.window addSubview:self.viewController.view];  
    [self.window makeKeyAndVisible];
    

    然后在你的ViewController:

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        // blah blah blah
    
        [self.view addSubview:imagePickerController.view];
        [self.view addSubview:self.glView];
        [self.view addSubview:mapView];
    }
    

    注意init方法通常用于初始化值,viewDidLoad通常用于设置视图。

    【讨论】:

    • 为什么它不让我这样做:(self.window.rootViewController = self.viewController;) 代表?似乎我无法访问 self.viewcontroller 它说 EXC_bad_access
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多