在 Swift 中重新加载 UIBarButtonItem
Reload a UIBarButtonItem in Swift
我正在尝试实施 favorite-marker 功能。我通过 Font Awesome Star 意识到了这一点。
现在我尝试在点击后重新加载 UIBarButtonItem,因为 Star 必须是满的或空的(取决于用户喜欢与否)。
我找不到这样做的任何选项:(
我的按钮声明:
markedButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Done, target: self, action: "onMarkedTap:")
if questionWithIdIsMarked(detailItem2!){
markedButton.setFAIcon(FAType.FAStar, iconSize: 25)
}else{
markedButton.setFAIcon(FAType.FAStarO, iconSize: 25)
}
let navButtons = [shuffleBtn, markedButton]
self.navigationItem.setRightBarButtonItems(navButtons, animated: true)
它首先尝试在 onMarkedTap(sender: UITapGestureRecognizer
中 sender.view?.reloadInputViews()
,但这也没有用。问题是 UIBarButtonItem 不是从 UIView 继承的,所以重新加载它不是那么容易。
有什么想法吗?
此致,
帕特里克
首先声明两个普通按钮,如:
var btnFavourite:UIButton!
var btnShuffle:UIButton!
然后在viewDidLoad()
中写入如下代码
self.btnFavourite = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
self.btnFavourite.frame = CGRectMake(0, 0, 30, 30)
self.btnFavourite.setImage(UIImage(named: "blank_star.png"), forState: UIControlState.Normal)
self.btnFavourite.setImage(UIImage(named: "fill_star.png"), forState: UIControlState.Selected)
self.btnFavourite.addTarget(self, action: "favourite:", forControlEvents: UIControlEvents.TouchUpInside)
self.btnShuffle = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
self.btnShuffle.frame = CGRectMake(0, 0, 30, 30)
self.btnShuffle.setImage(UIImage(named: "shuffle.png"), forState: UIControlState.Normal)
self.btnShuffle.addTarget(self, action: "shuffle:", forControlEvents: UIControlEvents.TouchUpInside)
let barButtons = [UIBarButtonItem(customView: self.btnFavourite), UIBarButtonItem(customView: self.btnShuffle)]
self.navigationItem.rightBarButtonItems = barButtons
并实现两个按钮的方法如下
@IBAction func favourite(sender:UIButton) {
if self.btnFavourite.selected == true {
self.btnFavourite.selected = false
}
else {
self.btnFavourite.selected = true
}
}
@IBAction func shuffle(sender:UIButton) {
// your code
}
我正在尝试实施 favorite-marker 功能。我通过 Font Awesome Star 意识到了这一点。
现在我尝试在点击后重新加载 UIBarButtonItem,因为 Star 必须是满的或空的(取决于用户喜欢与否)。 我找不到这样做的任何选项:(
我的按钮声明:
markedButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Done, target: self, action: "onMarkedTap:")
if questionWithIdIsMarked(detailItem2!){
markedButton.setFAIcon(FAType.FAStar, iconSize: 25)
}else{
markedButton.setFAIcon(FAType.FAStarO, iconSize: 25)
}
let navButtons = [shuffleBtn, markedButton]
self.navigationItem.setRightBarButtonItems(navButtons, animated: true)
它首先尝试在 onMarkedTap(sender: UITapGestureRecognizer
中 sender.view?.reloadInputViews()
,但这也没有用。问题是 UIBarButtonItem 不是从 UIView 继承的,所以重新加载它不是那么容易。
有什么想法吗?
此致, 帕特里克
首先声明两个普通按钮,如:
var btnFavourite:UIButton!
var btnShuffle:UIButton!
然后在viewDidLoad()
中写入如下代码
self.btnFavourite = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
self.btnFavourite.frame = CGRectMake(0, 0, 30, 30)
self.btnFavourite.setImage(UIImage(named: "blank_star.png"), forState: UIControlState.Normal)
self.btnFavourite.setImage(UIImage(named: "fill_star.png"), forState: UIControlState.Selected)
self.btnFavourite.addTarget(self, action: "favourite:", forControlEvents: UIControlEvents.TouchUpInside)
self.btnShuffle = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
self.btnShuffle.frame = CGRectMake(0, 0, 30, 30)
self.btnShuffle.setImage(UIImage(named: "shuffle.png"), forState: UIControlState.Normal)
self.btnShuffle.addTarget(self, action: "shuffle:", forControlEvents: UIControlEvents.TouchUpInside)
let barButtons = [UIBarButtonItem(customView: self.btnFavourite), UIBarButtonItem(customView: self.btnShuffle)]
self.navigationItem.rightBarButtonItems = barButtons
并实现两个按钮的方法如下
@IBAction func favourite(sender:UIButton) {
if self.btnFavourite.selected == true {
self.btnFavourite.selected = false
}
else {
self.btnFavourite.selected = true
}
}
@IBAction func shuffle(sender:UIButton) {
// your code
}