【问题标题】:Different behavior in accessing Views via Tabs or Segues通过选项卡或 Segue 访问视图的不同行为
【发布时间】:2012-02-01 15:34:29
【问题描述】:

在我的应用实施过程中,我遇到了以下问题。 我有一个选项卡式应用程序,单击每个选项卡我可以访问相应的视图:例如,单击 tab2 会打开 view2。但是我也可以通过单击 view1 上的按钮来访问 view2,如下所示:

...
[buttonToView2 addTarget:self action:@selector(gotoView2) forControlEvents:UIControlEventTouchUpInside];
...

地点:

- (void)gotoView2
{
    //execute segue programmatically
    [self performSegueWithIdentifier: @"View2Segue" sender: self];
}

View2 有一个表格,其中显示了填充了来自 Internet 的数据的数组的数据(在 viewDidAppear 方法中)。 因此,选择 tab2 或单击按钮都应该将用户带到目标 view2。

这可行,但在两种情况下具有不同的行为:

  • 如果我单击选项卡,表格中已经填充了数据,而应用程序从 Internet 检索信息
  • 如果我单击按钮并执行 segue,则在应用程序从 Internet 检索信息时表是空的

为什么?也许是因为按钮调用的选择器是在不同的线程上执行的? 请问有什么想法吗?

问候, 亚萨

【问题讨论】:

  • 确保你已经为你的序列正确实现了-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender(查看有用的帖子?:stackoverflow.com/questions/8680453/…
  • 在这种情况下,我没有实现prepareForSegue,因为我没有必须传递给目标视图2的信息...我会尝试更好地解释。我有:@interface View2 : UIViewController { NSArray *arrayView2; UIImage *profileImage; .... 如果我第二次通过选项卡访问此视图,所有这些变量都会被填充。如果我通过 Segue 以编程方式访问,它们是空的。

标签: ios tabs refresh behavior segue


【解决方案1】:

每次执行 Segue 时,它​​都会创建 destinationViewController 的新实例(在本例中为 view2)。这意味着您有 2 个单独的 view2 实例。

【讨论】:

  • 是否有可能以某种方式避免这种情况?还是有解决方法?谢谢你的回答!!!
  • 没有办法避免 Segue 的所作所为。但也许考虑重新设计您的应用程序的流程。例如,您可以让按钮以编程方式切换到第二个选项卡,而不是执行 segue。
  • 您的意思是这样的:View2 *currentImageDetail = [self.storyboard instantiateViewControllerWithIdentifier:@"View2Identifier"]; [self.View1 addSubview:currentImageDetail.view]; 还是有更好的方法?非常感谢!!!
猜你喜欢
  • 2020-12-22
  • 2017-12-13
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多