我使用以下代码覆盖自定义segue中的perform方法,以便在视图控制器之间移动时实现滑动效果。
- (void)perform
{
MasterController *sourceController = (MasterController *)self.sourceViewController;
MasterController *destinationController = (MasterController *)self.destinationViewController;
CGRect frame = sourceController.view.frame;
[sourceController.view addSubview:destinationController.view];
[destinationController.view setFrame:CGRectOffset(frame, frame.size.width, 0)];
[UIView animateWithDuration:0.5 animations:^{
[sourceController.view setFrame:CGRectOffset(frame, -frame.size.width, 0)];
} completion:^(BOOL finished) {
[sourceController presentViewController:destinationController animated:NO completion:nil];
[destinationController.view removeFromSuperview];
}];
}
类似于此代码存在于整个互联网上。问题是“有时”动画结束后屏幕闪烁/闪烁/闪烁然后恢复正常。
删除[destinationController.view removeFromSuperview];
代码行似乎解决了这个问题。但是,这看起来不对!正确?
任何想法如何解决这个问题?
答案 0 :(得分:0)
是的,只需删除[destinationController.view removeFromSuperview];
即可。它将为您完成。在segue结束时,destinationController.view
将有一个新的超级视图,并将从sourceController.view
中删除。