根据segue / VC的来源更改文本颜色

时间:2014-05-19 21:55:49

标签: ios objective-c uitableview uistoryboardsegue

我做了一些研究,但大多数示例仍然只有一个ViewController到一个ViewController:我有4个TableViewControllers转到一个TableViewController

我在detailsTableViewController上有一个简单的数组。对于我的数组中的一个项目(显示在表格上),我希望它是一个不同的颜色,基于调用此页面的TableViewController。我有四个不同的TableViewControllers,其中有一个带有segue到detailsTableViewController的按钮,所以我想知道我来自哪个。

然后我想这样做:

if (indexPath.row == 1)
    { cell.detailTextLabel.textColor = [UIColor someColor];}

所以我需要的逻辑是:

if (calledSegue="fromRed")
    {if (indexPath.row == 1)
        {cell.detailTextLabel.textColor = [UIColor redColor];}}
else if (calledSegue="fromYellow")
    {if (indexPath.row == 1)
        {cell.detailTextLabel.textColor = [UIColor yellowColor];}}
else if (calledSegue="fromGreen")
    {if (indexPath.row == 1)
        {cell.detailTextLabel.textColor = [UIColor greenColor];}}
else if (calledSegue="fromBlack")
    {if (indexPath.row == 1)
        {cell.detailTextLabel.textColor = [UIColor blackColor];}}

有人可以帮我弄清楚我需要做些什么来使这项工作? 同样,我需要确定哪个TableViewController是segue的来源,然后根据该信息更改indexPath == 1的文本颜色。

每个segue都有一个单独的标识符,如我在示例代码中所见。

由于

1 个答案:

答案 0 :(得分:0)

您应该使用方法prepareForSegue:sender:来完成此类工作。

首先,在您的详细信息控制器中添加一个属性firstRowColor,以便在tableView代表上使用它。

然后在每个源视图控制器中,覆盖方法prepareForSegue:sender:。在即将执行segue时调用此方法,以便沿视图控制器传递数据。尝试这样的事情:

- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
   // Check if the segue is the right one
   if ([segue.identifier isEqualToString:kDetailSegueIdentifier]) {
       // Specify the right color for this source view controller
       [(DetailViewController*)segue.destinationViewController setFirstRowColor:[UIColor redColor]];
   }
}