加载新视图在 iphone 中显示空白屏幕
Posted
技术标签:
【中文标题】加载新视图在 iphone 中显示空白屏幕【英文标题】:Loading new view shows blank screen in iphone 【发布时间】:2012-08-22 04:21:59 【问题描述】:请注意,我正在尝试学习 iphone,对于这个问题,我想不出任何解决方案。
我创建了一个名为 Loading 的空视图。我已经用一些图像填充了它的 Loading.xib。现在这是我正在使用的代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Loading *firstView = [[Loading alloc]init];
self.navigationController = [[UINavigationController alloc]init];
self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
[self.navigationController pushViewController:firstView animated:YES];
// Override point for customization after application launch.
[self.window addSubview:self.navigationController.view];
[window makeKeyAndVisible];
return YES;
问题是,当我运行代码时,它只会显示空白屏幕。
如何加载加载屏幕。欢迎任何推荐的教程链接
@implementation Loading
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
// Custom initialization
return self;
最好的问候
【问题讨论】:
【参考方案1】:首先,Loading 是一个视图而不是视图控制器。你不应该用导航控制器来推动它。
其次,将导航控制器的视图添加到窗口中并不是一个好主意。
请查看thread 以了解有关UIView
和UIViewController
的更多详细信息
相反,您可能想要创建一个 LoadingViewController,并将其视图(XIB 文件)更改为您想要的,然后使用这样的代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
LoadingViewController *lvc= [[LoadingViewController alloc]init];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:lvc];
self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
// Override point for customization after application launch.
self.window.rootViewController = self.navigationController;
[window makeKeyAndVisible];
return YES;
【讨论】:
它是一个视图控制器。我已经把它变成了一个视图控制器。其次,我不能做一个加载屏幕根吗? 你可以。只需使用 self.window.rootViewController = loading。但是您是手动创建了 XIB 文件还是使用类创建了 XIB 文件?如果是前一种情况,您可能需要使用 initWithNibName。 我不是手动创建的,它是类自带的。请检查我编辑的加载代码。m 解决了这个***.com/questions/7520971/…【参考方案2】:--> "加载.xib"
你永远不会加载这个,所以除非“加载”的 init: 选择器的实例做了一些花哨的东西,否则这个视图是空的。
编辑:“你能解释一下我怎么称呼它吗?”
覆盖初始化... *
- (id)init
if ((self = [super initWithNibName:@"SomeNib" bundle:nil]))
// ...
return self;
* 如果所有者和 nib 在 IB 中不匹配,您要么 A)在 IB 中正确创建配给,要么 B)在代码中手动执行:
更新初始化:
[super initWithNibName:nil bundle:nil]
覆盖:
- (void)loadView
[super loadView];
UINib *nib = [UINib nibWithNibName:@"SomeNib" bundle:nil];
[nib instantiateWithOwner:self options:nil];
【讨论】:
你能解释一下我怎么称呼这个吗?【参考方案3】:您必须更改代码,例如,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Loading *firstView = [[Loading alloc] initWithNibName:@"Loading" bundle:nil];
self.navigationController = [[UINavigationController alloc]init];
self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
[self.window addSubview:self.navigationController.view];
[window makeKeyAndVisible];
[self.navigationController pushViewController:firstView animated:YES];
return YES;
希望对你有所帮助。
【讨论】:
不工作,还有提示吗? :S 打开你的 MainWindow.xib。选择NavigationController
。去检查员。将 NIB 名称设置为您的 Loading
viewController。保存并运行。试试看。【参考方案4】:
您需要从其 nib 文件加载视图。这是一个例子:
Loading *firstView = [[Loading alloc] initWithNibName:@"Loading" bundle:nil];
另外,当你分配你的 UINavigationController 时,你也可以设置它的根视图控制器属性,而不必像这样推送视图:
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: firstView];
【讨论】:
请进一步解释一下。我不太明白。我应该把这段代码放在哪里。 他的回答很完整; Apple 文档对于从 nib 加载视图也非常完整。 我不想让它成为 root,但我尝试了你的代码。它像往常一样是空白页。我的视图是 UIViewController。【参考方案5】:如果有人找到了这个帖子,但仍然无法弄清楚。试试这个。我忘记为该视图控制器添加目标成员资格。
【讨论】:
以上是关于加载新视图在 iphone 中显示空白屏幕的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 / 为啥快照视图中的快照在 iPhone 7 Plus 模拟器中显示为空白?
ng-Route 没有加载视图,显示一个空白屏幕,没有任何错误
向 Master-Detail 应用程序添加模式加载视图(在 applicationDidBecomeActive 方法中)