Swift 快捷导航栏按钮和标题don';不出现
我想在我的应用程序顶部创建一个导航栏。我创建了一个导航控制器->选项卡栏控制器->导航控制器->表格控制器Swift 快捷导航栏按钮和标题don';不出现,swift,uinavigationbar,xcode6-beta5,Swift,Uinavigationbar,Xcode6 Beta5,我想在我的应用程序顶部创建一个导航栏。我创建了一个导航控制器->选项卡栏控制器->导航控制器->表格控制器 我在右上方拖动了一个条形按钮项 我双击表控制器中间的标题并写了一个文本。 我还在控制器的viewDidLoad()中使用以下代码进行了尝试: self.navigationController.navigationBar.topItem.title = "some title" self.navigationItem.setRightBarButtonItem(UIBarButtonIte
self.navigationController.navigationBar.topItem.title = "some title"
self.navigationItem.setRightBarButtonItem(UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: "barButtonItemClicked:"), animated: true)
self.navigationItem.title = "YourTitle"
没有一个成功-我做错了什么/ 我非常确定,您可以在其viewDidLoad中设置表控制器的标题,该标题显示在导航栏中 这个答案解释了一个稍微不同的问题,但概念是相同的:
我相信您正在寻找
标题视图
尝试:
您可以尝试以下方法:
self.title = "Your Title"
var homeButton : UIBarButtonItem = UIBarButtonItem(title: "LeftButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "")
var logButton : UIBarButtonItem = UIBarButtonItem(title: "RigthButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "")
self.navigationItem.leftBarButtonItem = homeButton
self.navigationItem.rightBarButtonItem = logButton
如果你想根据自己的意愿设置你的“UINavigationBar”,请非常安全地遵循这一点,因为它在swift语言中非常简单,希望它能帮助你很多
第1步:-
在swift中创建一个category类只需继续“新建文件”并添加“简单swift类”,并命名为“MyCustomNavBarCategory.swift”
第2步:-
只需“清理类(删除该类中的所有代码)”和“将我的给定代码粘贴到下面”:-
//类将从下面的行开始从这里开始复制
让SCREEN_HEIGHT=UIScreen.mainScreen().bounds.size.HEIGHT
导入UIKit
扩展UINavigationBar{
//First increase navigation bar height .
override public func sizeThatFits(size: CGSize) -> CGSize {
NSLog("%f", SCREEN_HEIGHT*0.06);
let newSize:CGSize = CGSizeMake(self.frame.size.width, SCREEN_HEIGHT*0.10)
return newSize;
}
//then set layOut of your Custom Nav for several objects like titleview,buttons and all
public override func layoutSubviews() {
for var view in self.subviews
{
NSLog("view %@", view);
let str :String = view.classForCoder.description();
if(str == "UILabel")
{
//play with title view frame
var f = view.frame;
f.origin.y = self.frame.size.height/2 - view.bounds.size.height/2 ;
view.frame = f;
view.backgroundColor = UIColor.greenColor();
}
else if(str == "UIButton")
{
//play with buttons of navigation bar view frame
var f = view.frame;
f.origin.y = (self.frame.size.height/2) - (view.bounds.size.height/2) ;
view.frame = f;
view.backgroundColor = UIColor.greenColor();
}
}
}
}
//课程将在上面结束停止在上面一行复制代码,并将代码复制到您的“MyCustomNavBarCategory.swift”。就是这样
第3步:-
现在,您可以在此类中将任何帧设置为UINavigationBar的任何对象“如果您仔细实现它,这是UINavigationBar非常强大的类别” 如何设置图标而不是文本?我找到了方法:)-->var homeBytton:uibarbuttoneim=uibarbuttoneim(图像:,样式:,目标:,操作:)记住,您可以省去uibarbuttoneimstyle
而只使用类似.Plain
。。。您还应该使用let
而不是var
。您找到解决方案了吗?
//First increase navigation bar height .
override public func sizeThatFits(size: CGSize) -> CGSize {
NSLog("%f", SCREEN_HEIGHT*0.06);
let newSize:CGSize = CGSizeMake(self.frame.size.width, SCREEN_HEIGHT*0.10)
return newSize;
}
//then set layOut of your Custom Nav for several objects like titleview,buttons and all
public override func layoutSubviews() {
for var view in self.subviews
{
NSLog("view %@", view);
let str :String = view.classForCoder.description();
if(str == "UILabel")
{
//play with title view frame
var f = view.frame;
f.origin.y = self.frame.size.height/2 - view.bounds.size.height/2 ;
view.frame = f;
view.backgroundColor = UIColor.greenColor();
}
else if(str == "UIButton")
{
//play with buttons of navigation bar view frame
var f = view.frame;
f.origin.y = (self.frame.size.height/2) - (view.bounds.size.height/2) ;
view.frame = f;
view.backgroundColor = UIColor.greenColor();
}
}
}