0

我在将 NSIndexPath 传递给我的新视图时遇到了真正的麻烦。这是应用程序的工作方式:

我的导航栏中有一个 UIBarButtonItem,点击它,你会得到一个弹出视图,这显示了一堆东西。我需要从我的主视图中获取一个 NSIndexPath 到这个弹出视图。

我的弹出视图类中有一个 NSIndexPath 属性,并且弹出过渡在我的故事板中连接起来。

然后我有这段代码来跨视图传递索引路径:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"statsPopover"])
    {
        StatsViewController *statsVC = [segue destinationViewController];

        statsVC.selectedIndex = stageSelectionTable.indexPathForSelectedRow;
    }
}

然而,虽然这被调用,但索引路径实际上并没有在视图之间发送。我在弹出框上的索引路径始终是默认的,0,0 行和部分。

4

1 回答 1

0

您说您从调试/日志记录中知道该方法正在运行,您的if语句被触发,并且stageSelectionTable.indexPathForSelectedRow具有您期望的值。

进行这种诊断会使您走上解决问题的正确道路。坚持下去——如果你用调试器或调试器测试其他东西,NSLog你应该能够找到问题所在。

  • 你知道那statsVC是非nil吗?如果是nil,则您要设置的消息selectedIndex什么也不做。

  • statsVC你期待的课吗?例如,如果弹出窗口中的(表格?)视图嵌入在导航控制器中,segue.destinationViewController它将指向导航控制器,并且您需要查看其子视图控制器数组以找到您正在寻找的那个。

  • 您的StatsViewController类用于其selectedIndex属性的任何访问器方法是否正常工作?(如果它是强/保留属性的合成访问器,这应该不是问题。)

  • 在您的StatsViewController课堂上,您是否尝试selectedIndex在实际设置之前与之合作?设置属性prepareForSegue:sender:然后使用它viewDidLoad应该可以正常工作,但使用它awakeFromNib可能不会,并且在init...方法中使用它肯定不会。

于 2012-06-07T15:34:24.423 回答