一旦用户成功登录我的应用程序并选择存储他们的凭据,我将跳过我的初始视图控制器(登录页面)。
我的新根视图控制器是 TabBarController,因为我的应用程序的导航使用 TabBar。
但是,在应用程序中,我有前面有各自 NavigationController 的 TableView。在这些 TableViews 中,我在 TabBar 上方得到了一个黑条。如果我导航到下一个 TableView,那么黑条会加倍,如果我进入下一个 TableView,那么黑条现在是第一个的 3 倍。
这是一些屏幕截图;由于敏感数据,我添加了灰色条来掩盖实时数据。



我的 AppDelegate(使用 Swift)在我的 didFinishLaunchingWithOptions 方法中有这个:
if let api_key = NSUserDefaults.standardUserDefaults().stringForKey("key") {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tabBarController = storyboard.instantiateViewControllerWithIdentifier("TabBarC") as! MyTabBarController
if let window = self.window {
window.rootViewController = tabBarController
}
}
我应该实例化内部导航控制器吗?如果是这样,我该怎么做,因为我的 TabBar 已经有 4 个用于 4 个选项卡的 NavigationControllers,我应该在哪里插入在应用程序深处发现的其他 NavControllers?
更新: 我能够通过以下方式解决黑条错误
- 关闭项目
- 压缩 Main.storyboard 文件作为备份
- 从项目文件夹中删除 Main.storyboard 文件
- 从备份中添加回以前版本的 Main.storyboard
我还找到了一种替代方法来“跳过”我的登录屏幕,而无需在我的应用程序委托中实例化视图控制器。
伪代码 在故事板中添加一个 ID 到登录和 tabBar 视图控制器之间的 segue。
In the login VC
view did load
hide the textboxes
if key exists {
performSegue(id: <segwayid>
} else {
show the login textboxes
