现在我有一个名为 OTGMarkerDetailView 的自定义 View 类,它继承自 UIView 和相应的 .xib 。它只有两个文本标签,我已将文本标签链接到 OTGMarkerDetailView.m 中的文本标签 IBOutlets。
OTGMarkerDetailsView.h:
#import <UIKit/UIKit.h>
@interface OTGMarkerDetailView : UIView
- (void)setLabelsWithMainAddress:(NSString *)mainAddress subAddress:(NSString *)subAddress;
@end
OTGMarkerDetailView.m
#import "OTGMarkerDetailView.h"
@interface OTGMarkerDetailView ()
@property (nonatomic, strong) IBOutlet UILabel *mainAddressLabel;
@property (nonatomic, strong) IBOutlet UILabel *subAddressLabel;
@end
@implementation OTGMarkerDetailView
- (void)setLabelsWithMainAddress:(NSString *)mainAddress subAddress:(NSString *)subAddress {
NSLog(@"%@", self.mainAddressLabel.text);
self.mainAddressLabel.text = mainAddress;
self.subAddressLabel.text = subAddress;
NSLog(@"%@", self.mainAddressLabel.text);
}
@end
我使用 initWithFrame 将它作为 subview 加载到另一个 View 中。但是当我尝试设置文本标签值时,控制台总是记录 null,当我使用断点时,似乎 mainAddressLabel 和 subAddressLabel 本身是 nil 。我在将 xib 链接到 View 时做错了什么吗?我错过了什么?谢谢。
最佳答案
我找到了解决办法。我创建了一个自定义 UIView。
1.
我在 中附加了 Nib 文件initWithFrame 方法
CustomView *nibView;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil];
nibView = [array objectAtIndex:0];
[self addSubview:nibView];
}
return self;
}
您可以清楚地看到,我没有创建 UIView 的实例,而是创建了相同类类型的 nibView。
2.
现在创建 IBOutlet 属性并对其进行处理。在 customView.m 文件中。
@interface FTEndorsedExpandedView : UIView
@property (retain) IBOutlet UILabel *label;
@end
3.
创建函数来设置标题或更改属性。 (在 customView.m 文件中)。使用 Nib 查看 访问属性而不是使用 自我标签
-(void)setLabelText:(NSString*)string{
[nibView.label setText:string];
}
关于iOS 自定义 View 文本标签为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855529/