控制器不会更新标签的文本

时间:2014-02-10 12:45:40

标签: ios uicollectionview uicollectionviewcell

我使用以下代码创建自定义视图并将其添加到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已创建且有效。

enter image description here

这是控制器类TT2TimeViewController的代码:

#import "TT2TimeViewController.h"

@implementation TT2TimeViewController


-(void) viewDidLoad {
    [self.lblCity setText:[self city]];
}


-(void)viewDidAppear:(BOOL)animated {
    [self.lblCity setText:[self city]];
}

这两种功能都没有被调用。

再显示一个屏幕截图,显示如何设置文件所有者:

enter image description here

所以我的问题是:我在函数collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath的实现中做错了吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:我需要将控制器的'view'变量链接到xib文件中的view对象,如下所示:

enter image description here

然后它开始起作用。

(奇怪的是:只有viewDidAppear被叫)