Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c &引用;开始/结束外观转换的调用不平衡;?_Objective C_Uiview_Xcode4.5_Uistoryboardsegue - Fatal编程技术网

Objective c &引用;开始/结束外观转换的调用不平衡;?

Objective c &引用;开始/结束外观转换的调用不平衡;?,objective-c,uiview,xcode4.5,uistoryboardsegue,Objective C,Uiview,Xcode4.5,Uistoryboardsegue,这似乎是个愚蠢的问题,但我似乎无法解决它 我的用户单击位于应用程序主屏幕上的图标,该图标执行一个模式序列,打开一个视图。从这里,用户可以单击另一个按钮,将其推送到详图视图。这里是提示:一旦我的用户在详细视图上,并尝试单击另一个按钮,我就会得到错误: “开始/结束外观转换的调用不平衡。” 我假设这是由于在原始模态上叠加了大量的分段。简而言之,这个过程是:模态,推,推。在第三次按下时,上面的“错误”出现在控制台中 我怎样才能解决这个问题?以下是发生错误的序列/代码: .m - (IBAction)p

这似乎是个愚蠢的问题,但我似乎无法解决它

我的用户单击位于应用程序主屏幕上的图标,该图标执行一个模式序列,打开一个视图。从这里,用户可以单击另一个按钮,将其推送到详图视图。这里是提示:一旦我的用户在详细视图上,并尝试单击另一个按钮,我就会得到错误:

“开始/结束外观转换的调用不平衡。”

我假设这是由于在原始模态上叠加了大量的分段。简而言之,这个过程是:模态,推,推。在第三次按下时,上面的“错误”出现在控制台中

我怎样才能解决这个问题?以下是发生错误的序列/代码:

.m

- (IBAction)purchasebuttonpressed:(id)sender
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_1" bundle:nil];
    StrainDetailViewController *yourViewController = (StrainDetailViewController *)[storyboard instantiateViewControllerWithIdentifier:@"DispensaryViewController"];

    [self.navigationController pushViewController:yourViewController animated:YES];



}

如果我了解你的应用程序结构,以及你正在尝试做什么,我认为你需要将控制器的安排更改为:

HomeViewController (the window's root view controller)
     |
     | modal segue to:
     |
NavigationController whose root view controller is ViewController
     |
     | push to :
     |
TableViewController
     |
     | push to:
     |
DetailViewController

另一种方法是,如果HomeViewController类似于启动屏幕或欢迎屏幕,我更喜欢的方法是,在第一次看到它之后,您不需要返回到它,那就是将导航控制器设置为窗口的根视图控制器。在导航控制器的根视图控制器(在您的示例中为ViewController)中,从ViewDidDisplay方法以无动画的方式呈现HomeViewController,因此它将是用户看到的第一件事。当用户想要继续时,关闭HomeViewController,您将进入ViewController,HomeViewController将被解除分配。您需要在ViewDidDisplay方法中加入逻辑,以便HomeViewController的显示仅在第一次调用ViewDidDisplay时发生。

您是否也在按钮上附加了一个segue,其操作方法是purchasebuttonpressed:?你称之为segue,但你会手动推送。对不起,不是segue。只是推一下。此代码适用于我的XIB文件(它是一个DetailView)。按钮“按下”到我的故事板上的视图。导航控制器在控制器层次结构中的何处?导航控制器连接到主屏幕(homeviewcontroller)。层次结构是:NavigationController>HomeViewController(按下)>ViewController(模式)>TableViewController(按下)>DetailViewController(按钮位于此处,按下它会在控制台中显示该消息)。我对您的结构有点不确定,但我认为问题在于导航控制器的位置。当您呈现模态视图控制器时,我认为您应该呈现一个导航控制器,以ViewController作为其根视图控制器。