我使用以下代码创建自定义视图并将其添加到UICollectionViewCell的contentView
-(UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell* newcell;// = [[UICollectionViewCell alloc] init];
newcell = [collectionView dequeueReusableCellWithReuseIdentifier:@"hi" forIndexPath:indexPath];
TT2TimeViewController* controller = [[TT2TimeViewController alloc] init];
NSString* city = [cities objectAtIndex:indexPath.row];
controller.city = city;
UIView* view = [[[NSBundle mainBundle] loadNibNamed:@"TT2TimeViewController"
owner:controller
options:nil] objectAtIndex:0];
[newcell.contentView addSubview:view];
return newcell;
}
在TT2TimeViewController的xib中,我在中心放置了一个UILabel,并希望控制器将标签文本更新为city
变量的值。
但由于某种原因,标签未按预期更新。我已仔细检查并确保IBOutlet已创建且有效。
这是控制器类TT2TimeViewController的代码:
#import "TT2TimeViewController.h"
@implementation TT2TimeViewController
-(void) viewDidLoad {
[self.lblCity setText:[self city]];
}
-(void)viewDidAppear:(BOOL)animated {
[self.lblCity setText:[self city]];
}
这两种功能都没有被调用。
再显示一个屏幕截图,显示如何设置文件所有者:
所以我的问题是:我在函数collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
的实现中做错了吗?
答案 0 :(得分:0)
我找到了解决方案:我需要将控制器的'view'变量链接到xib文件中的view对象,如下所示:
然后它开始起作用。
(奇怪的是:只有viewDidAppear
被叫)