Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.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
在XIBs iOS之间移动_Ios_View_Xib_Modalviewcontroller - Fatal编程技术网

在XIBs iOS之间移动

在XIBs iOS之间移动,ios,view,xib,modalviewcontroller,Ios,View,Xib,Modalviewcontroller,我有一个基于视图的应用程序,它有三个xib文件,每个文件都有自己的视图控制器。我如何从一个换到另一个?我使用此代码从xib 1移动到xib 2,但当我使用相同的代码从xib 2移动到xib 1时,我会在[self-presentModal….]行上获得EXC\u BAD\u访问权限 MapView *controller = [[MapView alloc] initWithNibName:@"MapView" bundle:nil]; controller.modalTransitionSt

我有一个基于视图的应用程序,它有三个xib文件,每个文件都有自己的视图控制器。我如何从一个换到另一个?我使用此代码从xib 1移动到xib 2,但当我使用相同的代码从xib 2移动到xib 1时,我会在[self-presentModal….]行上获得EXC\u BAD\u访问权限

MapView *controller = [[MapView alloc] initWithNibName:@"MapView" bundle:nil];

controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

[self presentModalViewController:controller animated:YES];

我怎样才能自由地从一个xib移动到另一个?

我认为您试图做的是呈现一个模态视图,然后将其忽略,对吗?如果是这种情况,那么您可以将下面的代码放在您用来消除它的方法中(例如-(IBAction)dissmissModalView)


希望这能奏效。让我知道。

initWithNibName其实没有必要。。。你可以把它改成零

下面是正确的代码(没有动画):

尝试使用“当前”返回视图1时,您不应收到EXC_BAD_访问权限。如果无法解决此问题,请使用以下方法:

[self dismissModalViewControllerAnimated:YES];

第二个视图控制器将消失,第一个视图控制器将再次可见。

请注意,像这里的其他答案一样显示模态视图控制器将意味着您有一个不断累积的视图控制器堆栈。长时间使用该应用程序会导致崩溃

相反,您可以从应用程序窗口调出视图。这里有一种方法:

将数据成员添加到应用程序代理以存储当前视图:

@class MyAppDelegate : NSObject <...>
{
    UIViewController* currentVC;
}
以及从一个屏幕切换到另一个屏幕:

MapView* mapView = [[MapView alloc] init];
[[[UIApplication shared] delegate] setCurrentVC:mapView];

如果我说我爱你,那就足够了吗?这正是我需要的,真不敢相信我以前从未见过。非常感谢你!如果这回答了您的问题,请确保通过检查它是否正确来表明这一点。
@class MyAppDelegate : NSObject <...>
{
    UIViewController* currentVC;
}
-(void)setCurrentVC:(UIViewController*)newVC
{
    if (newVC==currentVC) return;
    if (currentVC!=nil)
        [currentVC.view removeFromSuperview];
    currentVC = newVC;
    if (newVC!=nil)
        [self.window addSubview:newVC.view];
 }
MapView* mapView = [[MapView alloc] init];
[[[UIApplication shared] delegate] setCurrentVC:mapView];