0

我有一个视图控制器,它已通过 xib 连接。在那个xib中,我有一个单独的视图,我将这个相同的视图连接到2个不同的IBoutlets,并将这个视图添加到主视图。但是在插座中,我添加的第二个视图仅可见。第一个是看不到的。为什么?

4

2 回答 2

3

尽管可以将两个出口连接到同一个视图对象,但很少建议这样做。在您的情况下,这只是一个 UIView (子类)对象。两个 IBOutlet 的“指针”都指向同一个(单独的)对象。

如果您现在设置两个,第一个,然后是第二个,布局它们等等,那么您会觉得只有第二个是可见的。这就是你所说的。

假设您首先布局了左视图,然后布局了右视图,然后您会发现只有右视图可见。
如果您现在转过布局语句的顺序(无论是什么,位置,大小,框架,颜色,......)并布局右视图然后左视图,只会出现左视图。这仅仅是因为您设法将同一个对象链接到两个 IBOutlet。通过布局第二个,您只需覆盖您在第一手设置的布局数据。

根据我在您的案例中所读到的内容,我建议在 IB 中创建(可能重复)一个额外的 UIView (或任何子类),并将它们相应地链接到一个 IBOutlet 。

于 2012-11-19T14:47:50.647 回答
0

是的,您可以将两个 IBOutlet 连接到一个对象,但我认为这对您没有帮助,

这就像你用两个名字 X 和 Y 打电话给同一个人,然后问,嘿!你是Y,XI在哪里看不到他:)。

我可以建议的是,如果您希望两个子视图同时可见,则它们添加两个 UIView,每个 UIView 都连接到单个 IBOutlet,否则仅使用连接到单个 IBOutlet 的单个 UIView 并尝试为 ex 制作切换逻辑:

if(isConditionForViewOne){
//Change UI accordingly
  view.backgroundColor  =  [UIColor orangeColor];
}
else if(isConditionForViewTwo){
//Change UI accordingly
view.backgroundColor  =  [UIColor yellowColor];
}
于 2012-11-19T15:18:29.323 回答