添加没有XIB的子视图

时间:2011-02-17 07:38:27

标签: cocoa-touch xcode ios uiview addsubview

这可能看起来很简单,但我刚刚开始对我这么做......

我有一个带工具栏的主视图。当用户按下工具栏中的按钮时,我希望在屏幕顶部显示一个小提示。我在现有的UIView中添加了一个UIView,并将其设置为隐藏。我将它连接到我的视图控制器中名为“searchView”的ivar,并尝试了以下内容:

searchView.hidden = NO;

当这不起作用时,我尝试添加......

[self.view addSubview:self.searchView];

......也没用。

我是否需要以某种方式设置索引以使其高于主视图?

这种做法完全错了吗?

1 个答案:

答案 0 :(得分:1)

如果您从界面构建器创建了UIView,请忘记使用addSubview,因为它自动执行此操作。

要在图形模式(IB)中执行此操作,请按照以下步骤操作:

在文件中定义IBOutlet“h”应该类似于:

IBOutlet UIView * myHiddenView;

然后在IB中,将您在h文件中定义的IBOutlet连接到您在IB中以图形方式创建的UIView,并将隐藏属性提供给此UIView(复选框)。

然后在按钮按下方法执行此操作:

myHiddenView.hidden = NO;

如果您更喜欢以编程方式复制此示例代码:

在.h文件的界面中定义

UIView *myHiddenView;
<。>在.h文件中的接口之后:

-(void)displayView:(id)sender;

然后在.m文件中:

-(void)viewDidLoad{
    myHiddenView = [[UIView alloc] initWithFrame: CGRectMake (x, y, width, height)];
    myHiddenView.hidden = YES;
    [self.view addSubview: myHiddenView]

    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];
    [button setTitle:@"button" forState:(UIControlState)normal];
    [button addTarget: self action: @selector(displayView:) forControlEvents: UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

-(void)displayView:(id)sender{
    myHiddenView.hidden = NO;
}