无法使用segue将数据传递到另一个View Controller

时间:2015-10-28 18:22:19

标签: objective-c segue

我有

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  if ([segue.identifier isEqualToString:@"AvaToiminguAlustamiseKontroller"])
  {
    ToiminguAlustamiseKontroller*toiminguAlustamiseKontroller =
    segue.destinationViewController;
    toiminguAlustamiseKontroller.delegate = self;
  toiminguAlustamiseKontroller.dictView2=dictView1;

    self.providesPresentationContextTransitionStyle = YES;
    self.definesPresentationContext = YES;
    [toiminguAlustamiseKontroller setModalPresentationStyle:UIModalPresentationOverCurrentContext];

  }

}

dictView1和dictView2类型是NSDictionary。由于某种原因,数据未传递给第二个View Controller(viewDidLoad中的NSLog为null)。可能是字典太大而无法在segue被触发之前传递给第二个View Controller?

我试过的随机字符串传递得很好。

取消第二个视图控制器并再次显示后,数据就会出现。

3 个答案:

答案 0 :(得分:0)

您可能忘记了{2}中的"start": "node server/server.js" NSDictionary和第二类alloc]init]

答案 1 :(得分:0)

根据手头的信息,这也是一种猜测,但是你能否确认目标视图控制器的NSDictionary * dictView2属性是strong而不是weak?< / p>

此外,您是否可以再次检查此属性是否在目标视图控制器的生命周期早期设置或写入其他位置?

答案 2 :(得分:0)

  • 尝试在SecondVC中创建NSString属性并从FirstVC传递值,如果字符串在SecondVC中登录,则表示问题在于要传递的数据。
  • 如果没有,请尝试记录 viewWillAppear:(BOOL)animated viewDidAppear:(BOOL)animated 中的数据,而不是 viewDidLoad:(BOOL)animated 。猜猜,问题是当再次初始化属性时,因此变为空。

我想发布它作为评论,但我仍然没有足够的声誉。想一想,这可能会有所帮助。