我做了一些研究,但大多数示例仍然只有一个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都有一个单独的标识符,如我在示例代码中所见。
由于
答案 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]];
}
}