如果数据模型中有任何已保存的数据,我会尝试显示一个ViewController
。但我得到以下错误:
警告:试图显示其视图不在窗口层次结构中的* on *“
相关代码:
override func viewDidLoad() {
super.viewDidLoad()
loginButton.backgroundColor = UIColor.orangeColor()
var request = NSFetchRequest(entityName: "UserData")
request.returnsObjectsAsFaults = false
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var results:NSArray = context.executeFetchRequest(request, error: nil)!
if(results.count <= 0){
print("Inga resultat")
} else {
print("SWITCH VIEW PLOX")
let internVC = self.storyboard?.instantiateViewControllerWithIdentifier("internVC") as internViewController
self.presentViewController(internVC, animated: true, completion: nil)
}
}
我尝试过使用谷歌找到的不同解决方案,但都没有成功。
发布于 2014-09-25 01:42:56
此时,在您的代码中,视图控制器的视图仅被创建,但没有添加到任何视图层次结构中。如果您希望尽快从视图控制器中显示,则为了安全起见,您应该在viewDidAppear
中执行此操作。
发布于 2015-03-20 17:12:59
在目标c:这解决了我在mpmovieplayer上呈现视图控制器时的问题。
- (UIViewController*) topMostController
{
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}
发布于 2016-10-23 00:50:38
Swift 3
作为一个新手,我发现当前的负载模式视图可以被忽略,但如果你不需要显示模式,切换到根控制器是最好的。
我用的是这个
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard?.instantiateViewController(withIdentifier: "MainAppStoryboard") as! TabbarController
present(vc, animated: false, completion: nil)
在我的tabController中使用以下代码:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let view = storyboard.instantiateViewController(withIdentifier: "MainAppStoryboard") as UIViewController
let appDelegate = UIApplication.shared.delegate as! AppDelegate
//show window
appDelegate.window?.rootViewController = view
如果您需要在多个情节提要屏幕之间切换,只需调整为视图控制器即可。
https://stackoverflow.com/questions/26022756
复制相似问题