【发布时间】:2015-04-08 08:58:00
【问题描述】:
很奇怪的问题。我根据coredata 实体类别中的属性值设置UIImageView 的backgroundcolor。单击UINavigationController 中的类别可以更改此类别。因此,在更改类别并“弹出”回UINavigationController 层次结构后,我希望调整backgroundcolor。一开始我只在viewWillAppear 方法中有这段代码。就像这样,它总是先设置新颜色,然后再切换回原来的状态。现在我通过将代码放在viewWillAppear 和viewDidAppear 中来“修复”它。但我不喜欢在不知道为什么的情况下这样做。知道错误在哪里吗?
这是当前代码:
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//First the category name and pin
//ATTENTION: I don't know why but without having this placed in viewWill and viewDidAppear, this wouldn't work..
if(self.poi.belongsToCategory){
self.categoryLabel.text = self.poi.belongsToCategory.name;
self.categoryLabel.textColor = [UIColor blackColor];
self.pinColorImageView.backgroundColor = [POICategory getColorForPinColorType:[self.poi.belongsToCategory.pinColor intValue]];
} else {
self.categoryLabel.text = NSLocalizedString(@"0_category_uncategorized", nil);
self.pinColorImageView.backgroundColor = [UIColor redColor];
self.categoryLabel.textColor = [UIColor grayColor];
}
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
//First the category name and pin
if(self.poi.belongsToCategory){
self.categoryLabel.text = self.poi.belongsToCategory.name;
self.categoryLabel.textColor = [UIColor blackColor];
self.pinColorImageView.backgroundColor = [POICategory getColorForPinColorType:[self.poi.belongsToCategory.pinColor intValue]];
} else {
self.categoryLabel.text = NSLocalizedString(@"0_category_uncategorized", nil);
self.pinColorImageView.backgroundColor = [UIColor redColor];
self.categoryLabel.textColor = [UIColor grayColor];
}
//And then place the pin on the map and zoom
[self.mapView addAnnotation:self.pin];
[self focusOnPin];
}
【问题讨论】:
-
可能是因为你调用
[super viewWillAppear:animated];和[super viewDidAppear:animated];在超类中做了一些颜色变化? -
您如何更改 belongsToCategory 属性?执行
viewWillAppear后是否可以设置。即,您是在该调用之后还是之前弹出控制器并设置类别?如果是这样,颜色可能会设置为viewWillAppear中的先前颜色,然后viewDidAppear.中的新颜色值得描述您如何弹出和更改类别。 -
好吧,我只调用 super,但我没有在 super 类中做任何颜色更改。
-
@RoryMcKinnel 你的回答怎么了?
-
@Mikael 抱歉,我不确定我是否理解。回答什么?我的最后一条评论是询问更多关于
belongsToCategory是如何设置错误理论的信息。我怀疑viewWillAppear可能正在被调用,(除非@MichiZH 可以确认它肯定没有被输入),并且问题是我上一条评论中提到的调用时间的结果。但是,自从询问以来我没有看到任何更新,因此无话可说。
标签: ios objective-c core-data uiimageview mkmapview