我创建了这个简单的演示。主要故事板是这样的:
该视图控制器中的代码如下:
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)buttonClicked:(id)sender {
SecondViewController* secondVC = [SecondViewController new];
[self.navigationController pushViewController:secondVC animated:YES];
}
@end
在appdelegate.m中有:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
return YES;
}
在SecondViewController.m中,只有默认代码。
问题是,SecondViewController看起来是黑色的,并且在推动动画期间有明显的滞后。但是,当我将SecondViewController的backgroundColor设置为任何颜色(例如红色)时,没有延迟,一切看起来都很正常。我在iOS 8上测试了这个,在模拟器和iPhone设备上都是这样。
我以前从未见过这个。 UIViewController的默认背景是透明还是黑色?或者我在这里缺少什么?提前谢谢!
答案 0 :(得分:0)
SecondViewController
没有笔尖。首先将视图控制器添加到故事板并转到xcode中的实用程序(右侧面板) - >身份检查员(第三个图标),这里将其类名设置为SecondViewController
和故事板ID" SecondViewController",然后将按钮点击事件更改为:
- (IBAction)buttonClicked:(id)sender
{
SecondViewController * secondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[self.navigationController pushViewController:secondVC animated:YES];
}
答案 1 :(得分:0)
如果您的控制器在故事板中,可能会出现问题:
SecondViewController* secondVC = [SecondViewController new];
您正在执行alloc init
,除非您覆盖SecondViewController
方法,否则不会完全初始化init
。如果您的SecondViewController
在故事板中使用instantiateViewControllerWithIdentifier
SecondViewController* secondVC = [self.storyboard instantiateViewControllerWithIdentifier: @"SecondViewController"];
[self.navigationController pushViewController:secondVC animated:YES];