【发布时间】:2013-04-04 20:07:48
【问题描述】:
我想在 UINavigationItem 的右上角有一个 UISwitch,而不是 UIBarButton。如果不继承 UINavigationItem,这是否可行?
【问题讨论】:
标签: objective-c cocoa-touch uibarbuttonitem uinavigationitem uiswitch
我想在 UINavigationItem 的右上角有一个 UISwitch,而不是 UIBarButton。如果不继承 UINavigationItem,这是否可行?
【问题讨论】:
标签: objective-c cocoa-touch uibarbuttonitem uinavigationitem uiswitch
您可以使用initWithCustomView: 方法创建一个带有自定义视图的UIBarButtonItem。例如:
UISwitch *switch = ...;
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:mySwitch];
将此设置为UINavigationItem 上的左/右项。
【讨论】:
[UIBarButtonItem initWithCustomView:] 是可能的:
UISwitch* switchView = [[UISwitch alloc] init];
UIBarButtonItem* switchItem = [[UIBarButtonItem alloc] initWithCustomView:switchView];
self.navigationItem.rightBarButtonItem = switchItem;
【讨论】:
在 Swift 中-
在 viewDidLoad() 中编写这段代码
let switchDemo=UISwitch(frame:CGRectMake(15, 15, 0, 0))
switchDemo.on = true
switchDemo.setOn(true, animated: false)
switchDemo.addTarget(self, action: "switchValueDidChange:", forControlEvents: .ValueChanged)
self.view.addSubview(switchDemo)
这是你的功能 -
func switchValueDidChange(sender:UISwitch!)
{
if (sender.on == true){
println(“on”)
}
else{
println(“off”)
}
}
【讨论】:
[UIBarButtonItem initWithCustomView:] 是可能的:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: mySwitch];
【讨论】:
对于 Swift 4:
@IBOutlet weak var hostGuestSwitchOutletDeclare: UISwitch!
private func loadHostGuestSwitch(){
hostGuestSwitchOutletDeclare.isOn = true
hostGuestSwitchOutletDeclare.setOn(true, animated: false)
hostGuestSwitchOutletDeclare.addTarget(self, action: #selector(switchValueDidChange), for: .valueChanged)
if self.hostGuestSwitchOutletDeclare.isOn {
self.navigationItem.title = "ON"
} else {
self.navigationItem.title = "OFF"
}
}
@objc func switchValueDidChange(sender:UISwitch!) {
if (sender.isOn == true){
self.navigationItem.title = "ON"
} else {
self.navigationItem.title = "OF"
}
}
【讨论】:
Swift 版本
let customSwitch = UIBarButtonItem(customView: UISwitch())
navigationItem.rightBarButtonItem = customSwitch
在 viewDidLoad 中执行此操作
【讨论】: