UILabel即使连接到IBOutlet并且IBOutlet具有正确的值也不会更新

时间:2013-05-20 23:18:24

标签: uilabel uistoryboardsegue iboutlet

我有一个TableViewCOntroller,它显示了一个图像列表和相关描述。我将数据传递给准备segue方法的详细视图。我传递的MSMutableDrictionary对象具有正确的值,我可以在详细视图viewDidLoadMethod中的对象的NSLog中看到这一点。这个代码如下:

.h详细视图控制器

@interface sitespecLargeImageDetail : UIViewController
@property (strong, nonatomic) NSMutableDictionary *details;
@property (strong, nonatomic) IBOutlet UIImage *largeImage;
@property (strong, nonatomic) IBOutlet UILabel *largeImageLabel;
@end

.m的详细视图控制器

@implementation sitespecLargeImageDetail

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

_largeImage = [_details valueForKey:@"pbvurl"];
_largeImageLabel = [_details valueForKey:@"pbvdesc"];


NSLog(@"%@",  _largeImageLabel);


}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

以下是tableviewcontoller中对segue事件的准备:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
sitespecLargeImageDetail *detailViewController = (sitespecLargeImageDetail    *)segue.destinationViewController;
detailViewController.details = _dictObj;

}

一些奇怪的事情:

  1. 当我在连接检查器中查看故事板中的详细视图控制器时,我可以看到标签和图像Outlets。我可以看到我连接了标签插座。太棒了,但是当视图加载时它不会更新!我知道详细视图中的dict obj获取数据,因为我可以NSLog并查看它。我用它来设置标签的IBOutlet,但没有。
  2. 在连接检查器中,我可以看到UIImage插座但是我无法将它连接到我放置在详细视图控制器中的UIImage VIew,它只是不允许我连接它,没有错误,就在我控制拖动时来自detailview控制器,我甚至没有看到它!我看到了标签插座,但没有看到图片视图.......

1 个答案:

答案 0 :(得分:0)

首先,您要做的是_largeImageLabel.text = [_details valueForKey:@"pbvdesc"];

没有.text你正在做的是使用UILabel指针指向NSString,这显然不会导致你的预期行为!

对于UIImage插座,您需要的是UIImageView插座! UIImage不是视图,因此它与界面构建器没有任何关系(您不能在故事板中拖动UIImage,只有视图可以组成接口)。