连接IBOutlet时出现问题

时间:2011-01-26 10:37:04

标签: iphone

在我的应用程序中,我试图删除所有现有的子视图,并添加在Interface Builder中创建的新视图。但是,我似乎无法连接视图。

当按钮单击时,执行以下函数(在UIViewController的子类内):

// Display a list of settings to choose from
- (void) settings
{
    SettingsRootController *settingsController = [[SettingsRootController alloc]   initWithNibName:@"SettingsRootController" bundle:nil];
    _settingsController = settingsController;

    for (UIView *view in self.view.subviews) 
    {
        [view removeFromSuperview];
    }

    [self.view addSubview:_settingsController.view2];

    int a = [self.view.subviews count];    
    [self.view setNeedsDisplay];

   ......
}


#import <UIKit/UIKit.h>

@interface SettingsRootController : UIViewController
{
    IBOutlet UIView *_view2;
}

@property(nonatomic, retain) IBOutlet UIView *view2;

在Interface Builder中,我创建了一个新的基于视图的xib。将文件所有者设置为SettingsRootController。随机将UITextView拖入xib。连接UITextView以在SettingsRootController中查看和查看。

但是,如果以上行是:

[self.view addSubview:_settingsController.view2];

a始终为0,因此新屏幕为空。

但如果改为:

[self.view addSubview:_settingsController.view];

我可以看到UITextView。

2 个答案:

答案 0 :(得分:0)

实例var声明与属性声明不同!有和没有下划线。也许这就是为什么它不起作用。

答案 1 :(得分:0)

创建视图控制器时,不会在初始化时创建其视图。视图将在第一次访问view属性时创建。这就是为什么当你使用_settingsController.view时它的工作原理。但是当您访问view2时,将不会加载视图。您可以编写一个自定义的getter方法,如:

-(UIView*) view2 {
    _view2 = self.view;
    return _view2;
}