[英]How to access a UIView inside of a UIView
我是新来的iOS开发,我想知道,如果它是在所有可能访问UIView
从内UIView
。
我当前的设置是我有一个带有UIView
的主UIViewController
。 在该UIView
我有一个较小的UIView
,用于显示调试信息。 我想做的是能够以某种方式访问该视图,以便我可以在需要时查看/隐藏它,或者在尝试调试逻辑错误时甚至可以更改背景颜色。
我试图使用self.view访问它,但这只是给我父视图。 我已经在各种站点和教程中看到需要将其添加到subView并从那里开始工作,但是当我这样做时,视图设置为0x0。 我还看到我需要使用IBOutlet
并且在IB中需要引用它,但是我不知道如何执行该操作,因为我看不到我在控制器的头文件中定义的对象(在IB中的任何位置) 。
任何建议将不胜感激。
如果要通过IB访问第二个UIView:
@property (nonatomic, retain) IBOutlet UIView *myView
在ViewController中创建一个插座@property (nonatomic, retain) IBOutlet UIView *myView
(当然,将其合成) self.myView
访问您的视图(如果一切正确,它将具有非nil值) 最简单的方法是在ViewController的.h文件中设置IBOutlet
,然后将该嵌入视图(或子视图)连接到该IBOutlet。
然后,您可以随时根据需要设置hidden
属性的打开和关闭。
请查阅此Apple文档 ,其中描述了如何使用Xcode 4设计用户界面,并特别注意“直接使用源代码进行连接”部分。
给出的答案很好,这是另一种方法:给视图添加标签(一个int,例如“ 1”),然后像这样访问它:
UIView * viewToGet = [theMainView viewWithTag:1]
您可以在IB和代码中分配标签。
如果要在代码中创建子视图,则需要设置子UIView
的frame
(起点和大小)并执行[self.view addSubview:myChildView]
。 您可以使用属性或ivar跟踪此uiview,以便以后引用它以将其隐藏。
如果您使用的是xib文件,并且在xib内部定义了子视图,则可以,您很可能想定义一个IBOutlet来引用该元素。 就像是:
@property (nonatomic, retain) IBOutlet UIView * myChildView;
在实现中,您将需要:
@implementation MyCoolViewController
@synthesize myChildView = _myChildView;
-(void) dealloc
{
// make sure to release reference so the property gets cleaned up
[_myChildView release], _myChildView = nil;
[super dealloc];
}
-(void)someFunc
{
self.myChildView.hidden = YES; // or NO
}
在Interface Builder中,您需要将该插座分配到Xib中的某个视图。 通常,您可以通过选择“所有者”来执行此操作,然后在“连接检查器”中单击您的属性名称,然后将其拖动到要分配给它的UIView中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.