我无法让[self.navigationController popToRootViewControllerAnimated:YES];
工作(无法让我的任何应用程序返回主屏幕)。我尝试创建一个新的空白测试项目但它仍然无效,因此就是我所做的:
一个。使用向导创建单个vue应用程序
B中。通过名为UIViewController
cHome
类
℃。在主故事板上添加了一个按钮
d。通过拖放为其添加了一个Action,称为测试
电子。在生成的methed上,我添加了以下代码:
- (IBAction)atest:(id)sender
{
if (mHome == nil)
{
mHome = [[cHome alloc] initWithNibName:@"cHome" bundle:[NSBundle mainBundle]];
}
[self presentModalViewController: mHome animated:NO];
}
-G。我在attest.xib
小时。添加了- (IBAction)atest:(id)sender;
到标题并使用了UI将其链接到按钮
予。将以下代码添加到attest.m
- (IBAction)atest:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
学家在代码上设置一个断点
ķ。当我运行应用程序时,按第一个屏幕上的按钮然后按下下一个屏幕,断点关闭,但应用程序不会返回到屏幕前 代码
ViewController.h
#import <UIKit/UIKit.h>
#import "cHome.h"
@interface ViewController : UIViewController
{
cHome *mHome;
}
- (IBAction)atest:(id)sender;
@end
ViewController.m
#import "ViewController.h"
@implementation ViewController
- (IBAction)atest:(id)sender {
if ( mHome==nil)
{
mHome = [[ cHome alloc]
initWithNibName:@"cHome"
bundle:[NSBundle mainBundle]];
}
[self presentModalViewController: mHome animated:NO];
}
cHome.h
#import <UIKit/UIKit.h>
@interface cHome : UIViewController
- (IBAction)atest:(id)sender;
@end
cHome.m
#import "cHome.h"
@implementation cHome
- (IBAction)atest:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
@end
答案 0 :(得分:3)
因为视图控制器是以模态方式呈现的,所以你需要解除它,而不是pop到root,如果你按下了控制器,这是合适的:
所以替换这段代码:
- (IBAction)atest:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
用这个:
- (IBAction)atest:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
或者,如果要弹出视图控制器,则必须先将其推送。因此,请确保ViewController
是故事板中UINaviagionController
的根视图控制器,然后按如下所示更新代码:
// In `ViewController.m`
- (IBAction)atest:(id)sender
{
if (mHome == nil)
{
mHome = [[cHome alloc] initWithNibName:@"cHome" bundle:[NSBundle mainBundle]];
}
[self.navigationController pushViewController:mHome animated:YES];
}
// In cHome.m
- (IBAction)atest:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
答案 1 :(得分:0)
如果您使用导航控件作为app delegate中的根视图控件,则这足以进入主视图
- (IBAction)atest:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}