我正在尝试将我的应用转到下一个屏幕。我开始创建一个带有2个屏幕的简单测试应用程序
在第一个vue上,我有一个按钮连接到以下代码以调出下一个屏幕
- (IBAction)atest:(id)sender {
if (mHome == nil)
mHome = [[cHome alloc] initWithNibName:@"cHome" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:mHome animated:YES];
}
我提出了一个断点,以确保代码exicutes,它确实.....但下一个屏幕没有出现。
完整代码
#import <UIKit/UIKit.h>
@interface cHome : UIViewController{
}
- (IBAction)atest:(id)sender;
@end
@interface cHome ()
@end
@implementation cHome
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (IBAction)atest:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
答案 0 :(得分:0)
如果要推送视图控制器,可以轻松创建从第一个视图控制器到第二个视图控制器的推送segue,然后使用
进行推送 [self performSegueWithIdentifier:@"yourSegueIdentifier" sender:self];
&#34;推送segues&#34;可以通过代码或故事板文件创建。
答案 1 :(得分:0)
您的代码中有错误:
mHome = [[cHome alloc] initWithNibName:@"cHome" bundle:[NSBundle mainBundle]];
我认为这是笔尖的名字。它应该是mHome而不是cHome。
mHome = [[cHome alloc] initWithNibName:@"mHome" bundle:[NSBundle mainBundle]];
你基本上不能在一个导航控制器上推送两个相同的视图控制器。
答案 2 :(得分:0)
就像添加到Unkn0wn上一样,演示如何在应用中呈现某些视图。
然后我在我的代码中做了类似的事情:
[self presentViewController:[self.storyboard nstantiateViewControllerWithIdentifier:@"Paint"] animated:NO completion:nil];
显然,你的标识符不是“Paint”,但这就是我使用的。这是我的简单方法,希望它能帮助你好运!
注意:我的应用程序中没有使用导航控制器。
修改强> 的
想要指出的是,这种方法使得控制器无处出现,没有动画(我的控件有特殊的动画作为视图控制器之间的过渡,因此我不需要为控制器本身设置动画)