选项卡视图前的启动画面(欢迎)

时间:2016-01-21 01:33:23

标签: ios iphone swift uiviewcontroller uistoryboard

我正在尝试在Swift中编写一个iOS应用程序,在标签栏屏幕之前会有一个闪屏。

我看过:

但是他们都需要一个nib文件,我在故事板中完成了所有的UI。

这是我的主要问题: 网站上的代码有这样的内容:

ControllerName(nibName: "NibName", bundle: nil);

如果没有nib文件并使用故事板,我有什么方法可以做同样的事情吗?

5 个答案:

答案 0 :(得分:1)

假设你已经在故事板中有TabBarController,你可以在它旁边添加另一个视图控制器。

View Controller Object

然后,您将单击新视图,并在属性检查器中,选中"是否为初始视图控制器"。

enter image description here

这使得新视图成为应用程序打开时出现的第一件事。要转到tabBarController,我可能会在第一个视图上有一个按钮,它只有TabBarController的segue(控制拖动)。

答案 1 :(得分:0)

您可以做的是以下示例,其中标签栏视图控制器被设置为初始viewcontroller,您可以

  1. 将另一个UIViewController从对象库拖放到故事板object library

  2. 单击UIViewController并为其指定StoryboardID StoryboardID

  3. 在第一个视图控制器类中,您可以访问故事板并创建新视图控制器的实例,之前您使用故事板ID进行拖放,您可以在viewDidAppear覆盖功能中执行此操作以模态方式呈现新的视图控制器。

    override func viewDidAppear(animated: Bool) { 
    let myStoryboard = self.storyboard
        let modalViewController = myStoryboard?.instantiateViewControllerWithIdentifier("ModalViewControlllerID")
        presentViewController(modalViewController!, animated: true, completion: nil)
      }
    

答案 2 :(得分:0)

要以类似于您使用ControllerName(nibName: "NibName", bundle: nil)的xib的方式从情节提要中以编程方式实例化viewController,它是:

UIStoryboard(name: "StoryboardName", bundle: nil)
            .instantiateViewController(withIdentifier: "ControllerName")

但是您一定不要忘记在故事板中的 Storyboard ID 下设置viewController的任意标识符:
Storyboard ID in Interface Builder

答案 3 :(得分:0)

将navigationController和viewController拖到情节提要中,并使Navigationcontroller成为初始viewcontroller,然后从viewcontroller中推送tabbarcontroller。

谢谢, 纳达·伽玛尔(Nada Gamal)

答案 4 :(得分:0)

我只需要为我的项目做同样的事情。这是我的解决方法。

我创建了一个ViewController并将其设置为Main.storyboard中的Storyboard入口点。我以前有一个带有各种设置的TabViewController,在那里只需要更改1。

TabBarController应该有一个StoryboardID,我将其命名为“ TabBarID”。

我创建了一个新的LaunchViewController swift文件,并将该新ViewController添加到我的Main.storyboard中,并将其分配到Main.storyboard中。

这是该课程。计时器非常简单,一旦超过阈值,便会全屏显示TabBarViewController。

class LaunchViewController: UIViewController {
    
    var timer = Timer()
    var time = 0
    var threshold = 2
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundTheme(theme: .orangeWhite)
        Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(updateTimer)), userInfo: nil, repeats: true)
    }
    
    @objc func updateTimer() {
        time += 1
        if time > threshold {
            timer.invalidate()
            guard let storyboard = self.storyboard else {
                //failed to find storyboard
                return
            }
            
            let tabBarController = storyboard.instantiateViewController(identifier: "TabBarID")
            tabBarController.modalPresentationStyle = .fullScreen
            present(tabBarController, animated: true, completion: nil)
        }
    }
}