這是我第一次發佈在StackOverflow上 - 一直拉我的頭髮在這一個太長。希望這裏的社區能夠提供幫助。無法訪問和設置文本的UILabel以編程方式加載XIB
我已經設置了UIScrollView/PageControl來翻頁4頁。我試圖將.xib加載到ScrollView中4次,每次都使用不同的文本和圖像。
不幸的是,我可以加載xib,但無法更改文本/圖像,我不知道爲什麼。我認爲這可能與無法訪問我的ViewController中加載的NIB的UILabel有關。
這裏的CardView.xib(CardView.h)的.h文件:
#import <UIKit/UIKit.h>
@interface BMTutorialCardView : UIView
@property (strong, nonatomic) IBOutlet UIView *contentView;
@property (weak, nonatomic) IBOutlet UIImageView *cardImage;
@property (weak, nonatomic) IBOutlet UILabel *cardLabel;
@end
而這裏的CardView.m文件:
#import "CardView.h"
@implementation CardView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
UIView *xibView = [[[NSBundle mainBundle] loadNibNamed:@"BMTutorialCardView" owner:self options:nil] objectAtIndex:0];
[self addSubview:xibView];
}
return self;
}
@end
我迷上了的UIImageView和雙方的UILabel從xib到CardView.h的網點。
現在,在我的ViewController,我4次添加到廈門國際銀行滾動視圖我:
@implementation BMViewController
- (void)viewDidLoad
{
[super viewDidLoad];
for (int i = 0; i < 4; i++) {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
CardView *subview = [[BMTutorialCardView alloc] initWithFrame:frame];
//The following line doesn't change the text.
subview.cardLabel.text = @"This line doesn't change the text on the label";
[self.scrollView addSubview:subview];
}
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 4, self.scrollView.frame.size.height);
}
我不知道爲什麼subview.cardLabel.text實際上不會更改文本。看起來像subview.cardLabel是零,但我清楚地看到UILabel與iOS模擬器運行時在xib中的默認文本。
不知道答案,但'@implementation CardView'看起來很奇怪。 'CardView'和'BMTutorialCardView'應該如何關聯? –
抱歉 - 錯誤的複製和粘貼。他們是一樣的東西。感謝所有的幫助,讓它工作。看起來這是另一個視圖問題的觀點。 – user3081257