【问题标题】:UInavigationcontroller pop: it leaves the content of the popped viewUInavigationcontroller pop:它离开弹出视图的内容
【发布时间】:2013-01-03 16:43:01
【问题描述】:

情况: 我有一个完全基于 UInavigationcontroller 的应用程序。 在应用程序的某个时刻,我推送控制器 A 至极,其中包含几个子视图。 然后我推送一个控制器 B,它是同一类控制器 A 的另一个新实例。控制器 B 也有一些子视图。

当我弹出控制器 B 时,将显示与控制器 A 关联的视图。 问题是屏幕上还有与控制器 B 关联的视图的所有内容(在 A 的子视图之上)。

我的猜测是,问题与两个控制器都是同一类的实例这一事实有关。 (使用不同类的控制器可以完美运行)

谢谢。

编辑:所有的东西都是以编程方式完成的,并使用 xib(无情节提要)

视图 A 的推送:

ScreenViewController *secondView = [[ScreenViewController alloc] initWithNibName:@"ScreenViewController" bundle:nil];

// set some properties

[[self navigationController] pushViewController:secondView animated:YES];

视图 B 的推送:

ScreenViewController *newScreenView = [[ScreenViewController alloc] initWithNibName:@"ScreenViewController" bundle:nil];

// set some properties

[[self navigationController] pushViewController:newScreenView animated:YES];

ScreenViewController 关联的视图包含一个UIView(作为属性),我添加了我需要显示的所有子视图。我使用属性而不是直接使用视图,因为我需要将其放入UIScrollView

【问题讨论】:

  • 需要更多信息...发布一些代码,也许是故事板图片...

标签: ios uinavigationcontroller


【解决方案1】:

我猜你使用的代码类似于:

[self.navigationController.view addSubview:mySubview];

我之前通过在视图即将消失时删除子视图来处理这个问题:

- (void)viewWillDisappear:(BOOL)animated {

    [UIView animateWithDuration:0.3f
                          delay:0.0f 
                        options:UIViewAnimationOptionCurveEaseInOut 
                     animations:^(void){

                         mySubview.alpha = 0;

                     } 
                     completion:^(BOOL finished){

                         [mySubview removeFromSuperview];


      }];
    }

当你推送或弹出一个新的视图控制器时,上面的代码将执行,它会“淡出”子视图。完成后,它会将其从视图中删除。您只需确保每次再次加载视图时都重新添加子视图。希望这会有所帮助。

【讨论】:

  • 实际上结构有点复杂,因为与ScreenViewController 关联的视图我放置了UIScrollView 的实例,并在其上放置了另一个视图(用于允许缩放)。为此,我添加了我需要显示的所有子视图。
  • @Lando 在这种情况下,您可以使用此代码并将滚动视图的子视图替换为滚动视图本身。
  • 一个问题:为什么将alpha设置为0?
  • 它纯粹用于动画,因此视图在被移除之前会“淡出”。如果您不需要动画,您可以在 viewWillDisappear 中简单地[mySubview removeFromSuperview];
  • 该代码块将在 0.3 秒内将子视图的“alpha”设置为零,完成后,删除子视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多