Ios swift-UINavigationController扩展不工作

Ios swift-UINavigationController扩展不工作,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,我将在不同的视图控制器中的所有导航控制器上使用类似的属性,除了一些导航项和明显的标题 我做了一个扩展计划,以便能够调用它并设置默认值;然而,它什么也不做。当我简单地将代码放在实际类中时,它确实工作,但当我调用SetDefaults时,它就不工作了 扩展名: extension UINavigationController { func setDefaults(titleText: String){ let appDel = UIApplication.sharedAppl

我将在不同的视图控制器中的所有导航控制器上使用类似的属性,除了一些导航项和明显的标题

我做了一个扩展计划,以便能够调用它并设置默认值;然而,它什么也不做。当我简单地将代码放在实际类中时,它确实工作,但当我调用SetDefaults时,它就不工作了

扩展名

extension UINavigationController {
    func setDefaults(titleText: String){
        let appDel = UIApplication.sharedApplication().delegate as! AppDelegate

        //Set title label
        let label = UILabel()
        label.font = UIFont(name: appDel.regularDefaultFont, size: 16)
        label.text = titleText
        label.kern(1.0)
        label.sizeToFit()
        self.navigationItem.titleView = label

        //Set white background tint color
        self.navigationBar.barTintColor = UIColor.whiteColor()

        //Set navigation bar bottom line
        let bottomBorderRect = CGRect(x: 0, y: UIScreen.mainScreen().bounds.height, width: UIScreen.mainScreen().bounds.width, height: 1)
        let bottomBorderView = UIView(frame: bottomBorderRect)
        bottomBorderView.backgroundColor = UIColor(r: 250, g: 250, b: 250)
        self.navigationBar.addSubview(bottomBorderView)
    }
}
使用navigationcontroller从类调用SetDefaults:

self.navigationController.SetDefaults("Login")

在情节提要中,在将一个视图控制器连接到另一个视图控制器时,应选择
Segue
类型以
show
或者只需在属性检查器>故事书序列>种类>显示(例如)推送中选择序列>。 如图所示


它将永久解决此问题:)

在您的故事板中,在将一个视图控制器连接到另一个视图控制器时,您应该选择
Segue
类型以
show
或者只需在属性检查器>故事书序列>种类>显示(例如)推送中选择序列>。 如图所示


它将永久解决此问题:)

您的代码应该如下所示

let vcLogin = loginViewController(
            nibName: "loginViewController",
            bundle: nil)
        navigationController?.pushViewController(vcLogin,
            animated: true )

希望它能像水流一样工作…

您的代码应该是这样的

let vcLogin = loginViewController(
            nibName: "loginViewController",
            bundle: nil)
        navigationController?.pushViewController(vcLogin,
            animated: true )

希望这能像水流一样工作…

您能在分机中设置一个断点并查看是否达到了该断点吗?请确保您正在正确的导航控制器上调用
setDefaults
。如果您使用UISplitViewController,视图控制器自己的导航控制器属性可能不是screenkabiroberai上的属性,我尝试过了,它确实做到了@Luke,我正在调用刚才显示的视图控制器中的setDefaults。这是正确的吗?请查看我对以下响应的评论,以查看我用于显示视图控制器的代码。能否在扩展名中设置断点并查看是否已到达该断点?请确保您确实在右侧导航控制器上调用了
setDefaults
。如果您使用UISplitViewController,视图控制器自己的导航控制器属性可能不是screenkabiroberai上的属性,我尝试过了,它确实做到了@Luke,我正在调用刚才显示的视图控制器中的setDefaults。这是正确的吗?查看我对下面回复的评论,查看我用来显示视图控制器的代码。Faiz,我正在通过代码显示视图控制器<代码>让loginController=vcLogin()self.navigationController?.showViewController(loginController,发件人:nil)此外,我正在调用vcLogin控制器中设置的默认值。。是这样吗?@Walker,请检查我的新答案&为了让我知道它是否有效或完美解决方案Faiz,我正在通过代码显示视图控制器<代码>让loginController=vcLogin()self.navigationController?.showViewController(loginController,发件人:nil)此外,我正在调用vcLogin控制器中设置的默认值。。“对吗?”沃克,请检查我的新答案&让我知道它是否有效或完美solution@Walker,您是否遵循了我的代码&它现在在您这边起作用了吗?请告诉我你的最新情况feedback@Walker,您是否遵循了我的代码&它现在在您这边起作用了吗?请更新我关于你的反馈