我试图用标签栏交换到另一个根视图控制器; 通过app委托,我想添加过渡动画.默认情况下,它只显示没有任何动画的视图.
let tabBar = self.instantiateViewController(storyBoard: "Main", viewControllerID: "MainTabbar")
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window = UIWindow(frame: UIScreen.main.bounds)
appDelegate.window?.rootViewController = tabBar
appDelegate.window?.makeKeyAndVisible()
Run Code Online (Sandbox Code Playgroud)
这就是我交换到另一个rootview控制器的方式.
当我的应用程序第一次加载时,我将rootViewControllermy 的属性设置UIWindow为controllerA.
在我的应用程序中的某个时候,我选择更改rootViewController为controllerB.
问题在于,有时当我进行翻转过渡时controllerB,我会看到controllerA背后的观点.由于某种原因,视图没有被删除.什么更令人担忧的是,设置后rootViewController到controllerB,controllerA的dealloc方法永远不会被解雇.
我已经尝试UIWindow在切换之前删除手动的子视图controllerB,这解决了controllerA在后台看到视图的问题但是controllerAdealloc仍然永远不会被调用.这里发生了什么????
苹果文档说:
根视图控制器提供窗口的内容视图.将视图控制器分配给此属性(以编程方式或使用Interface Builder)将视图控制器的视图安装为窗口的内容视图.如果窗口具有现有视图层次结构,则在安装新视图之前将删除旧视图.
UPDATE
这是我的AppDelegate的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self showControllerA];
[self.window makeKeyAndVisible];
return YES;
}
- (void)showControllerA
{
ControllerA* a = [ControllerA new];
self.window.rootViewController = a;
}
- (void) showControllerB {
ControllerB* b = …Run Code Online (Sandbox Code Playgroud) 基本上我想知道我所在的视图控制器是否是根视图控制器.
如果它不是我想在导航栏中放一个按钮,显示"返回"(好像它是一个正确的后退按钮 - 这一点,我知道该怎么做).
在你问之前,我已经从我的视图控制器中删除了所有标题 - 我不希望它们显示在我的导航栏上......它非常复杂 - 但这意味着当我浏览导航堆栈时没有被推送视图控制器有一个后退按钮.:/
谢谢汤姆
这是AppDelegate中的didFinishLaunchingWithOptions方法.让我解释一下场景,我在我的应用程序中开发了像facebook这样的sideMenu,但现在我必须根据屏幕更改sideMenu列表(ViewController)
这里的侧面菜单是SideMenuViewController,它是contains中的一个参数,最终成为window的rootViewController.
那么,最基本的问题是"如何更改成为windows的rootViewController的控制器或变量"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
SideMenuViewController *leftMenuViewController = [[SideMenuViewController alloc] init];
self.container = [ContainerOfSideMenuByVeerViewController
containerWithCenterViewController:[self navigationController]
leftMenuViewController:leftMenuViewController];
self.window.rootViewController = self.container;
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
如果任何程序员想要了解更多代码或要求,欢迎通过编辑我的代码或注释来提供.
通过这个问题,我想知道我是否理解Root View Controller的概念.
在iOS应用程序中,根视图控制器(RVC)是其视图在启动时添加到UIWindow应用程序的控制器,是不是真的?
[window addSubview:rvcController.View];
[window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
现在,UIWindow还有一个rootViewController属性.运行上一段代码时,是否使用rvcController填充了该属性,还是必须明确设置它?
然后,在UINavigationController中,可以设置与入口点的先前RVC集不同的RVC.
在这种情况下,我第一次将一个控制器添加到navigationController堆栈(在其上推一个新的控制器),框架是否将该控制器设置为navigationController的RVC,或者我是否必须通过initWithRootViewController方法显式设置它?
升级 Xcode 后,我的应用程序的一个关键部分停止工作。
当我的应用程序启动时,我运行一个函数来检查布尔标志并设置正确的 rootViewController。
但是我用来设置它的代码现在已经停止工作了
class func setLoginAsInitialViewContoller(window:UIWindow) {
print("SET LOGIN")
let storyboard = UIStoryboard(name: "Login", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "LoginViewController")
controller.modalPresentationStyle = .overFullScreen
window.rootViewController = controller
window.makeKeyAndVisible()
}
Run Code Online (Sandbox Code Playgroud)
特别是当应用程序获得倒数第二行时,window.rootViewController = controller它会因libc++abi.dylib: terminating with uncaught exception of type NSException错误而崩溃。
上面的函数在一个被Utilities.swift调用的类中,我正在从我的内部调用该函数AppDelegate.swift,如下所示:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var storyboard: UIStoryboard? = nil
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.isIdleTimerDisabled = true
Utilities.decideInitialViewController(window: self.window!) …Run Code Online (Sandbox Code Playgroud) 我正在设计一个旨在具有以下导航结构的应用程序:我需要一个带有"注册"和"登录"按钮的欢迎视图,因为大多数应用程序具有:

此视图不显示任何导航栏,因为它似乎是常见的事情.如果点击"登录",则会以模态方式显示登录视图:

如果点击"注册",欢迎视图会导航到请求用户输入以创建帐户的表单:

然后,一旦用户登录并进入应用程序,我希望它具有类似于Facebook,YouTube或Spotify的侧边菜单:

作为中心小组a UINavigationController.左侧面板我觉得它通常是'UIViewController'......
关键是,我不知道rootViewController我的应用程序应该是什么,以及我应该具有什么样的视图控制器层次结构.我想过几个可能性:
1)作为rootViewControllera UINavigationController,按下隐藏导航栏的欢迎视图(可能吗?),如果需要,可以显示"登录"视图或按"注册"视图.一旦用户登录,从rootViewControllera,即a 弹出这些视图UINavigationController,然后在这样的导航控制器中推入管理侧边菜单内容的自定义视图控制器.
2)作为rootViewController侧面菜单自定义视图控制器,并设置为其中央面板a UINavigationController.按下欢迎视图等,无需为左/右面板设置任何视图控制器,然后当用户登录时,从中央面板弹出这些视图UINavigationController,按下相应的视图,然后设置左/右面板
我希望我已经解释过了.也许有另一种更好的方法来处理这种情况.有人实现了这样的应用程序吗?我需要这个问题的帮助,而且我也很感激被推荐一个自定义库/控件提供侧面菜单的东西来自使用过它的人,它易于使用和自定义.我知道它们有很多(例如MMDrawerController,JASidePanels),但是我想从其中一个开发了应用程序的人那里获得一些意见.
注意:我也需要支持iPad和iOS 5+
非常感谢
我目前正在开发一个需要显示带有灰色(黑/白)背景的对话框的项目.为了达到这个目的,我将截取屏幕截图和整个应用程序,将此屏幕截图放在全屏对话框的背景上,并在其上放置一个ColorFilter,使其变灰.
这是第一次完美的工作,但如果我滚动下面的内容并再次请求对话框,它会显示与之前相同的背景.
我用的代码是:
Bitmap bitmap;
View rootView = getActivity().getWindow().getDecorView().findViewById(android.R.id.content);
rootView.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(rootView.getDrawingCache());
rootView.setDrawingCacheEnabled(false);
imageView.setImageBitmap(bitmap);
Run Code Online (Sandbox Code Playgroud)
换句话说,getDrawingCache()始终返回应用程序的相同屏幕截图.
我是iPhone新手,
我想改变我的Rootviewcontroller新课程并将其转换为导航控制器.
这是我的代码片段,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:detailViewController];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我SIGABRT说了'adding a root view controller <NewClass: 0x6a8dd50> as a child of view controller:
因此,假设您需要一些需要下一个故事板的功能.例如,您需要根据单击的选项卡上载不同的内容以进行查看.

但是当你尝试使用这个故事板时问题出现了.当您切换标签时,您会收到此行为.

但在第一个选项卡一切都很好.所以看起来它没有第二次加载视图.在这种情况下,有人可以解释或给出导航控制器行为的链接,因为我在参考中找不到任何有用的东西.或者我应该如何在IB中或以编程方式更正此行为?
谢谢.
rootview ×10
ios ×7
iphone ×2
swift ×2
uiwindow ×2
android ×1
appdelegate ×1
bitmap ×1
cocoa-touch ×1
ios13 ×1
ios4 ×1
ipad ×1
navigation ×1
objective-c ×1
sidebar ×1
swift3 ×1
xcode ×1