Ios 如何正确切换视图

Ios 如何正确切换视图,ios,objective-c,view,Ios,Objective C,View,我正在尝试使用滑动手势切换视图。我的刷卡功能正常,正在处理中,但不知何故,视图开关无法正常工作 滑动手柄的以下代码: -(void)handleSwipeLeft:(UISwipeGestureRecognizer *)gestureRecognizer{ CGPoint location = [gestureRecognizer locationInView:tableView]; NSIndexPath *indexPath = [tableView indexPat

我正在尝试使用滑动手势切换视图。我的刷卡功能正常,正在处理中,但不知何故,视图开关无法正常工作

滑动手柄的以下代码:

-(void)handleSwipeLeft:(UISwipeGestureRecognizer *)gestureRecognizer{  
    CGPoint location = [gestureRecognizer locationInView:tableView];  
    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:location];  
    if(indexPath){  
        userCell *cell = [tableView cellForRowAtIndexPath:indexPath]; //userCell inherits from UITableViewCell so why complain?  
        StatisticsViewController *statisticsView = [StatisticsViewController new];  
        [self.view removeFromSuperview];  
        [self.view addSubview:statisticsView.view];  
        //[self.view insertSubview:statisticsView.view atIndex:0];  
    }  
}  `
我以前使用过insertSubview:atIndex:0,正如我之前所评论的那样。 我的问题是,我试图添加的新视图没有被添加。removeFromSuperview的工作原理是我得到一个黑屏(因此移除视图)。但是我不明白为什么我不能添加另一个视图(我创建了一个实例的statisticsView;我正在使用故事板,有一个带有一些标签和颜色的StatisticsViewController只是为了测试),我只是在删除视图后得到一个黑屏。 顺便说一句,我正在使用名为FrontPageViewController的rootviewcontroller我不知道如果在frontpageviewcontroller中加载一个干净的视图控制器(根),然后在需要加载另一个视图时将其关闭,是否更“正确”。(但我不明白为什么我目前的方法行不通)。
提前感谢

您的主要问题是,您正在将新视图添加到刚刚删除的同一视图中。您应该将其添加到其父视图中

关于你的观点,很遗憾,我不能用评论来澄清一些观点,但你不应该这样做

您不应该从控制器替换视图,应该在控制器之间切换

您可以通过在故事板中创建一个带有标识符的segue并将以下内容添加到手势处理程序方法中来实现这一点:

[self performSegueWithIdentifier: @"MySegue" sender: self];
如果您的唯一目的是替换同一控制器中的视图,则应以编程方式创建视图(仅视图而非控制器),而不是通过将视图从一个控制器添加到另一个控制器

如果您需要有关Segue的任何帮助,我建议您从以下内容开始阅读“添加要向前导航的Segue”


要手动执行segue,您需要为您创建的segue选择一个标识符。

我不确定您是否已阅读了我的全部文章,然后才解雇我。你有没有读过我写的关于我的方法的文章;我想不会吧?不管代码是否糟糕,您的代码可能只是描述了我询问的关于该方法的内容,不确定。。因为你的解释有点…糟糕编辑:我猜你在进一步阅读后删除了下一条评论。我试图从superview中删除当前视图的唯一原因是[self.view addSubview:statisticsView.view];或/[self.view insertSubview:statisticsView.view atIndex:0];正在努力显示我希望用户看到的视图。另外,我首先尝试了[super.view addSubview………..],然后在沮丧中尝试self.view,我想^^如果([recognizer state]==UIgesturerecognizer statesteated)zaheer,我不理解这一点,那么我会调用它一次。你的话也有点扭曲。你能详细说明一下吗?但是我的手势没有问题(我只是用一个手势来切换),我打算在视图控制器之间切换,因此向用户展示各个视图控制器持有的不同视图(如何通过代码实现这一点?);也许我的解释有点不好,sry:)我之所以使用视图控制器来处理其他视图控制器之间的切换,是因为我一直在读的那本书在某种程度上做到了这一点。如果您能澄清任何一点,我将不胜感激,因为我觉得这是构建应用程序的基础。如果您打算在控制器之间切换,您应该使用segues。你可以看一看,我现在会调查的,泰。我在看这个函数调用[self-presentViewController:statisticsView动画:YES completion:nil];(但它会导致黑屏;尽管没有删除视图)。我用不同的视图控制器构建我的应用程序是否正确?我在这些视图控制器之间切换,以向用户显示我的不同“屏幕/页面”。我的父视图不是我的rootviewcontroller/初始控制器吗?谢谢你的帮助和参考,帮助了我