我正在尝试根据表视图中触摸的单元格更改详细视图中标签的颜色。
我无法做到这一点。以下是我的代码。我在详细信息视图中包含了头文件,并为标签创建了IBOutlet
。
更新:理想情况下,当我点击一个单元格时,detailview中的标签颜色应为红色。这是一个关于我的问题的截屏视频。 http://www.youtube.com/watch?v=i0nhbsNJWHY&feature=youtube_gdata_player
#pragma mark - TableView Delegate
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"ReferenceDetail" sender:tableView];
}
#pragma mark - Segue
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"ReferenceDetail"]) {
ReferenceDetailViewController *referenceDetailViewController = [segue destinationViewController];
UIViewController *referenceDetailView = [segue destinationViewController];
if(sender == self.searchDisplayController.searchResultsTableView) {
NSIndexPath *indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
NSString *destinationTitle = [[filteredReferenceArray objectAtIndex:[indexPath row]] name];
[referenceDetailView setTitle:destinationTitle];
}
else {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSString *destinationTitle = [[referenceArray objectAtIndex:[indexPath row]] name];
[referenceDetailView setTitle:destinationTitle];
[referenceDetailViewController.label1 setTextColor:[UIColor redColor]];
}
}
}
答案 0 :(得分:0)
当您离开时,插座尚未设置,因此您无法让他们更改它们。尝试发送一些对象或其他内容,并在viewcontroller的viewdidload中,你将其读取,然后使用它作为知道要更改的颜色的方式,然后在相同的代码中更改标签的颜色。
答案 1 :(得分:0)
您遇到的问题是 ReferenceDetailViewController 中的插座UILabel尚未从xib加载,但您尝试设置它的textColor属性。
作为确保这是问题的一种方法,请尝试在设置颜色的行中设置断点,并在 ReferenceDetailViewController [viewDidLoad]方法中设置另一个断点。应首先调用设置颜色的行。
解决问题的一个简单方法是在 ReferenceDetailViewController 类上创建一个属性,该属性“保存”UIColor实例,然后在viewDidLoad方法上设置它:
// ...
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"ReferenceDetail"]) {
ReferenceDetailViewController *referenceDetailViewController = [segue destinationViewController];
UIViewController *referenceDetailView = [segue destinationViewController];
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSString *destinationTitle = [[referenceArray objectAtIndex:[indexPath row]] name];
[referenceDetailView setTitle:destinationTitle];
referenceDetailViewController.auxTextColor = [UIColor redColor];
}
// ..
在ReferenceDetailViewController中:
@interface ReferenceDetailViewController : UIViewController
@property (retain, nonatomic) UIColor *auxTextColor;
// ...
@end
@implementation ReferenceDetailViewController
- (void)viewDidLoad
{
[super viewDidLoad];
label1.textColor = self.auxTextColor;
// ...
}
@end
如果你必须为一组标签执行此操作,那么拥有一个NSDictionary对象来为你保存这些属性是明智的。