如何在不使用IBOutlet的情况下以编程方式引用视图

时间:2012-09-13 05:30:41

标签: ios uiviewcontroller interface-builder uistoryboard

我是iOS编程的新手,我正在使用XCode学习故事板。我的问题是

我已经使用IB添加了我想要的视图,但我不希望他们使用IB中的Ctrl + Drag连接到我的ViewController,但是以编程方式执行相同操作。 我有seens帖子建议在代码中创建视图的实例,并使用addSubView()添加它们(通过设置框架)。但我不想在代码中硬编码我的框架和大小,我更喜欢IB。我只需要在需要时参考它们。

在android中,我们可以通过布局XML上的getIdByName()来做同样的事情。我正在寻找类似的东西。

由于

2 个答案:

答案 0 :(得分:4)

在IB中,您可以设置视图的Tag属性,然后使用以下代码在代码中引用它:

int buttonTagNumber = 2;
UIButton *myTaggedButton = (UIButton *)[self.view viewWithTag:buttonTagNumber];

标签只是一个int,你可以拥有任意数量的标签。请注意,如果在一个层次结构中的两个不同视图上具有相同的标记,则行为是未定义的,它将抓取它找到的第一个。

答案 1 :(得分:0)

你可以这样钻取:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
    UIView *view = [vc.view viewWithTag:1];