Ios swift-UINavigationController扩展不工作
我将在不同的视图控制器中的所有导航控制器上使用类似的属性,除了一些导航项和明显的标题 我做了一个扩展计划,以便能够调用它并设置默认值;然而,它什么也不做。当我简单地将代码放在实际类中时,它确实工作,但当我调用SetDefaults时,它就不工作了 扩展名:Ios swift-UINavigationController扩展不工作,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,我将在不同的视图控制器中的所有导航控制器上使用类似的属性,除了一些导航项和明显的标题 我做了一个扩展计划,以便能够调用它并设置默认值;然而,它什么也不做。当我简单地将代码放在实际类中时,它确实工作,但当我调用SetDefaults时,它就不工作了 扩展名: extension UINavigationController { func setDefaults(titleText: String){ let appDel = UIApplication.sharedAppl
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,您是否遵循了我的代码&它现在在您这边起作用了吗?请更新我关于你的反馈