推视图控制器,黑屏
我正在推动一个新的视图控制器,并将一些数据传递给它。 当我运行应用程序,我可以按下button,并推到新的视图,但屏幕是完全黑色的。 任何帮助表示赞赏。
- (IBAction)button:(id)sender { NSString *firstField = self.field.text; NSString *secondField = self.field2.text; self.resultsArray = [[NSArray alloc] initWithObjects:firstField, secondField, nil]; NSUInteger randomResult = arc4random_uniform(self.resultsArray.count); self.label.text = [self.resultsArray objectAtIndex:randomResult]; ImagesViewController *ivc = [[ImagesViewController alloc] init]; ivc.label = self.label.text; [self.navigationController pushViewController:ivc animated:YES]; }
当你使用一个故事板,并且你想在代码中推送一个视图控制器(而不是一个segue),你需要给控制器一个标识符,并像这样创build它:
ImagesViewController *ivc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyIdentifier"]; ivc.label = self.label.text; [self.navigationController pushViewController:ivc animated:YES];
您正在推送的视图控制器没有设置任何框架维度。build议始终为对象调用指定的init。 对于视图控制器,指定的init方法是
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
如果你有一个xib分配它
ImagesViewController *ivc = [[ImagesViewController alloc] initWithNibName:<your xib> bundle:[NSBundle mainbundle];
如果您使用的是自定义视图,请指定一个框架维度并将其添加为子视图
Xcode 7.3和Swift 2.2
在我的情况下,我在故事板做了一个改变,并使其成为TabBarController,并相应地将控制器的类从UIViewController更改为UITabBarController。 经过一些调整后,这个变化是不利的,我做了所有的变化,并得到了一个黑屏,然后因为我忘记了改变控制器的类。 我把它改回UIViewController,它又开始工作。
所以检查你是否犯了同样的错误。 黑屏是因为故事板上有一个类(UIView / UITabBar / UITableView控制器),但代码中不一样。
这也可能发生,如果你有某种不正确的连接在故事板的一个子视图到控制器的视图。 检查每个子视图中的参考出口是否正确。
我有一个很好的:
确保你正在实现正确的超级类,委托等。在viewController的顶部你试图呈现。 即
我根本没有使用/实现UINavigationController
class TMDetailBlogViewController: UINavigationController { //code goes here }
后
class TMDetailBlogViewController: UIViewController { //code goes here }
通常情况下,通过调用:
initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
在你的自定义UIViewController。
如果你不使用xib文件,那么你在做什么可能是好的。 您是否在ImagesViewController的构造函数中dynamic创buildUI元素?