gpt4 book ai didi

ios - 使用 Nib 和 UIView 类加载 UIView

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:10:06 27 4
gpt4 key购买 nike

我试过这门课

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 类时,应用程序将加载并且我可以像它应该的那样打开它,但我无法以编程方式更改标签的状态?我完全迷失在这里!

最佳答案

通常来说,UIViews 没有访问 IBOutlets 的权限。 Apple 打算将 xib 仅分配给 UIViewControllers。

但是,您可以通过两种方式从 xib 加载 View :

1) 创建一个额外的 xib 以在您的 UIViewController 中使用。将文件的所有者设置为您的 View Controller ,将 View 的类名设置为您的自定义 View 类。在界面生成器中,这是在“自定义类”下。您可以将 View 设置为 IBOutlet,当您的 UIViewController 加载 xib 并将其自身设置为所有者时,iOS 将创建您的自定义类的实例(就像您在上面尝试的那样,但仅限于 Controller 类中)

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 属性来检索您的标签。您可以在 subview 属性中找到您的标签:

UILabel* myLabel = [self.subviews objectAtIndex:0];

关于ios - 使用 Nib 和 UIView 类加载 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16390049/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com