【问题标题】:Adding a subview without a XIB添加没有 XIB 的子视图
【发布时间】:2011-06-28 21:57:42
【问题描述】:

这可能看起来很简单,但我才刚刚开始,所以请耐心等待......

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

searchView.hidden = NO;

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

[self.view addSubview:self.searchView];

...这也不起作用。

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

这种方法完全错误吗?

【问题讨论】:

  • so searchView does 存在于您的 XIB 中吗?

标签: cocoa-touch xcode ios uiview addsubview


【解决方案1】:

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

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

在你的文件“h”中定义一个 IBOutlet 应该是这样的:

IBOutlet UIView * myHiddenView;

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

然后在您的按钮按下方法中执行以下操作:

myHiddenView.hidden = 否;

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

在.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;
}

【讨论】:

  • 由于某种原因,这些仍然不适用于我的原始项目。如果我用两个漂亮、整洁的视图制作一个新的,效果很好,但我使用的类肯定有一些奇怪的地方。还是谢谢你!
猜你喜欢
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
相关资源
最近更新 更多