我试过这门课
https://github.com/autresphere/ASDepthModal
我希望它像它一样弹出,但我希望能够以编程方式设置标签,因为我需要根据日期的不同而改变。我使用的是storyboard,所以我创建了一个.xib和uiview.h和uiview.m。在我的主UIViewController中,我有:
xibContents = [[NSBundle mainBundle] loadNibNamed:@".xib" owner:self options:nil];
testView = [xibContents lastObject];在我的.xib中,我已经将文件所有者设置为我的uiview类,这就产生了一个问题: NSUnknownKeyException当我将我的.xib中的uiiew设置为我的uiview类时,应用程序将被加载,并且我可以像应该的那样打开它,但是我不能以编程方式更改标签的状态?我完全迷失在这里了!
发布于 2013-05-19 21:55:37
真的让它起作用了。我采取了错误的方法。我发现,只需创建视图,并在单击按钮时使用背景图像和标签填充它,这会更简单。在UI设计器中做这件事很简单,但实际上这并不难。
感谢帮助我的人:)
发布于 2013-05-06 08:09:10
通常来说,UIViews不能访问IBOutlets。苹果公司的xibs只打算分配给UIViewControllers。
但是,您可以通过两种方式从xib加载视图:
1)创建要在UIViewController中使用的额外xib。将File的所有者设置为视图控制器,并将视图的类名设置为自定义视图类。在接口构建器中,这在“自定义类”下。您可以将视图设置为IBOutlet,当您的UIViewController加载xib并将其自身设置为所有者时,iOS将创建自定义类的一个实例(与您上面尝试的一样,但仅从控制器类中)
2)在UIView类中加载xib,并将self设置为结果对象:
- (id)init {
self = [super initWithFrame:CGRectMake(0, 0, 1024, 352)];
if (self) {
NSArray* nib = [[NSBundle mainBundle] loadNibNamed:@"TCSNumberKeyPad" owner:self options:nil];
[[nib objectAtIndex:0] setFrame:CGRectMake(0, 0, 1024, 352)];
self = [nib objectAtIndex:0];
}
return self;
}在这两种情况下,您都需要通过代码而不是IBOutlet属性来检索标签。您可以在subviews属性中找到标签:
UILabel* myLabel = [self.subviews objectAtIndex:0];
发布于 2013-05-06 07:13:39
文件的所有者应该是视图控制器,而不是视图本身。视图可以有到标签的插座。视图应该在nib中设置为您的自定义类。
https://stackoverflow.com/questions/16390049
复制相似问题