【问题标题】:How to display UIView in Storyboard [closed]如何在 Storyboard 中显示 UIView [关闭]
【发布时间】:2013-10-23 19:30:19
【问题描述】:

我喜欢在情节提要中显示 uiview,因此我不必以编程方式进行设计。 我从旧版本的 XCode 中看到了一些教程,但它似乎不适用于 XCode 5。 我有什么问题吗?我基本上知道如何用代码实现它并展示它。

我看到您必须将 Size 设置为 FreeForm,然后您可以调整它并将其添加到其他视图中,就像在代码中一样。

顺便想开发一个iOS 7 App。

提前致谢!

【问题讨论】:

  • 您实际上尝试做了什么来完成这项工作?
  • 因为我想为应用创建一个“模式”。所以我想基本上有一个小窗口,我可以随时显示和隐藏。我有一个类似测试的东西,其中有必要显示/隐藏 2 个不同的窗口,我不想在我的故事板中使用多个视图,因为这个过程重复了 10 次左右。我是 iOS 开发新手,所以也许有更多更好的解决方案

标签: ios xcode uiview storyboard


【解决方案1】:

如果您使用故事板并设置了自动布局,那么您很难设置视图的大小。由于您只需要 UIView 来显示在您的故事板中,请尝试这种方法。

  • 添加新文件,选择用户界面
  • 选择什么类型的 UI 并不重要
  • 确保您的类是 UIView 的子类

现在它会为您创建一个新的 xib。打开该 xib 并删除在界面生成器中看到的内容。现在将 UIView 拖到界面构建器上。您可以根据需要调整和修改它。当你需要它时,你可以做这样的事情

MyViewClass* myViewObject = [[[NSBundle mainBundle] loadNibNamed:@"MyViewClassNib" owner:self options:nil] objectAtIndex:0]

更新:

像这样创建你的视图 .h 文件

@interface CardView : UIView
{    
}
@property (nonatomic, retain) IBOutlet UIButton *rating_btn;

-(IBAction)rating:(id)sender;
+ (id)cardView;

你的 .m 文件

 +(id)cardView
{
    CardView *cardView = [[[NSBundle mainBundle] loadNibNamed:@"CardView" owner:nil options:nil] lastObject];
    if ([cardView isKindOfClass:[CardView class]])
    {
        return cardView;
    }
    else
        return nil;
}

-(IBAction)rating:(id)sender
{
    NSLog(@"Button pressed");
}

像这样在你的主视图控制器中使用这些

CardView *card = [CardView cardView];
[self addSubview:card];

确保您连接了 UIView 按钮。

【讨论】:

  • 它就是这样工作的。但我希望它有按钮,只有数据显示。那么如何将 ViewController 连接到它呢?我尝试了正常的方式。添加文件并通过将类名写入身份检查器来连接它,但视图无法识别它。一般有没有办法做到这一点?
  • 我尝试使用 UIWindow,但是当我显示它时它隐藏了主视图。
  • 您不能将 UIWindow 用于您想要实现的目标。查看更新的答案
  • 谢谢!你帮了我很多!
  • 还有一个问题:为什么我需要 +(id)cardView 中的 if 语句?对于编译器来说,它是一个 CardView 不是很明显吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 2016-05-25
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多