1

我正在尝试根据在表格视图中触摸的单元格来更改详细视图中标签的颜色。

我就是无法做到这一点。下面是我的代码。我已经包含了详细视图中的头文件,并IBOutlet为标签创建了一个。

更新:理想情况下,当我单击一个单元格时,详细视图中的标签颜色应该是红色的。这是关于我的问题的截屏视频。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]];
        }
    }
}
4

2 回答 2

0

当您转接时,插座尚未设置,因此您无法找到它们来更改它们。尝试发送一些对象或其他东西,并在您继续阅读的 viewcontroller 的 viewdidload 中读取它,然后使用它作为知道要更改为哪种颜色的方法,然后在相同的代码中更改标签的颜色。

于 2012-08-19T21:24:13.523 回答
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 对象来为您保存这些属性。

于 2012-08-19T21:51:46.563 回答