我怎样一个IBOutlet中连接到一个UIView?(How do I connect a IBOu

2019-07-18 22:23发布

我想看到作为一个动画后切换视图:

[UIView beginAnimations: @"Fade Out" context:nil];
[UIView setAnimationDelay:1.0];
[UIView setAnimationDuration:0.25];
splash.alpha = 0.0;
[UIView commitAnimations];
[self.view addSubview : view];

[self.view addSubview : view]; 我要为视图为它添加添加一个名字,所以我做了一个IBOutlet ,像这样:(上接第视图控制器的.h文件中)

IBOutlet UIView *main;

但是,当我尝试将连接*main UIView对故事板视图,它不会让我......非常感谢你们。

Answer 1:

你的困惑的一点是在代码中创建用户界面对象VS创建这些图形化使用界面生成器/分镜之间。

一条线索是你的预处理程序提示“IBOutlet中”的使用。 图1B是用于界面生成器==图形生成(使用故事板或XIB文件)。

如果在故事板制作...

  • 创建一个IBOutlet属性为你做了,虽然全正确的语法是
    @property (nonatomic, weak) IBOutlet UIView *main;

  • 拖动从对象库的“自定义视图”查看到你的故事板的场景。

  • 按Ctrl键从视图到ViewController。 你应该得到带有合适的项目来连接列表。 您IBOutlet中应该是在列表中。 选择它。

一个IBOutlet的整个目的是给你在你的故事板场景的项目的参考,你可以在你的代码中使用。

你不会需要做到这一点:

  [self.view addSubview : view];

因为它已经创建,并在你的故事板添加。 请确保你在你的视图层次期待它的位置。

如果在代码中创建...

在@interface声明属性

  @property (nonatomic, strong) UIView *main;

(无需IBOutlet ,你是不是在你的故事板连接起来。万一声明“强”,而不是“弱”你不立即将其分配到一个视图层次)。

在添加此行

  [self.view addSubview : view];

你需要考虑:你将不会在你的情节提要/厦门国际银行存在的新的看法? 如果是这样,你可以不加它,直到你已经创造了它。 (添加在你的故事板视图是没有意义的,因为它已经存在,在你的故事板场景)。

所以 - 当你出现在代码中这样做 - 你需要添加它之前创建视图。

  UIView* myView = [[UIView alloc] init];

设置它的框架属性,以便我们知道,当你将它添加到视图层次结构会出现

  myView.frame = CGRectMake (CGFloat x, CGFloat y, CGFloat width, CGFloat height);

将您的新创建的视图属性

  self.main = myView;

将它添加到您的视图层次

  [self.view addSubview : myView];

现在,您可以通过使用self.main引用它的代码。 这仅仅是因为这将是,如果你在IB /故事板和CRTL-拖参考链接到您的IBOutlet中已经添加它。

如果您在代码中创建您的视图,并立即将其添加到视图层次,以宣告属性的选择是设置视图上的(数字)的标签属性,那么你可以使用它的上海华盈的引用视图viewWithTag:方法

有一件事你不能做的就是在代码中创建视图,然后用故事板操纵它。

我希望这是所有有用的,我担心我可能会进一步混淆你!



Answer 2:

我迟到了这一点。 但是,让我寄我发现最近反正。

我有这样的情况:

1)BaseViewController包含MenuView(自定义的UIView)

2)MenuView包含menuTable持有所有的菜单项

3)在故事板我BaseViewController场景MenuView和MenuTableView

我能有IBOutlet中参考menuTable我们通常通过拖动故事板到BaseViewController.h表做。 但我想自定义MenuView负责填充MenuTable作为分离的关注。 为了做到这一点,我需要从MenuView.h到菜单表上的故事板IBOutlet中引用的连接。

所以这是我做过什么:

1)首先创建MenuView.h @property表(弱,非原子)IBOutlet中的UITableView * menuTable的IBOutlet中属性;

2)一旦创建了财产,还有刚刚离开的财产声明,表示这是IBOutlet中变量的一侧的小圆圈。

3)现在用故事板打开并MenuView.h在助理编辑XCode中打开,我可以点击圆圈并将其拖到表上的脚本。 (注:如果我尝试从故事板中拖动表格MenuView.h,它不会让我注意知道为什么。)

而已。 现在,我已经取得了从自定义的UIView到故事板IBOutlect连接。

注:我使用的XCode 7中定位iOS 7及以上的设备。 (如果说有什么区别)



Answer 3:

如果你是新来的Xcode或分镜脚本比你应该看看这个基本教程:

在iOS 5的第1部分开始故事板

在iOS 5的第2部分故事板开始



Answer 4:

你声明视图的属性?

语法应该是这样的:

@property (nonatomic, weak) IBOutlet UIView *main;


文章来源: How do I connect a IBOutlet to a UIView?