如何从 ActionSheet 更改 UIButton 的文本
How to change the text of UIButton from ActionSheet
我想更改 UIButton 的文字 city .
但是它不起作用,你能告诉我这里有什么问题吗?并且这个 IBAction setUpCityDropDown 连接到同一个 UIButton。
@IBAction func setUpCityDropDown()
{
let ActionSheet = UIAlertController(title: "Which City?", message: "City Name", preferredStyle: UIAlertControllerStyle.ActionSheet)
let cancelActionButton: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
}
let delhiActionActionButton : UIAlertAction = UIAlertAction(title: "Delhi", style: UIAlertActionStyle.Default)
{ action -> Void in
self.city.setTitle("Delhi", forState: UIControlState.Normal)
self.city.sizeToFit()
}
let mumbaiActionActionButton : UIAlertAction = UIAlertAction(title: "Mumbai", style: UIAlertActionStyle.Default)
{
action -> Void in
self.city.setTitle("Mumbai", forState: UIControlState.Normal)
self.city.sizeToFit()
}
let ahmedabadActionButton : UIAlertAction = UIAlertAction(title: "Ahmedabad", style: UIAlertActionStyle.Default)
{
action -> Void in
self.city.setTitle("Ahmedabad", forState: UIControlState.Normal)
self.city.sizeToFit()
}
ActionSheet.addAction(cancelActionButton)
ActionSheet.addAction(ahmedabadActionButton)
ActionSheet.addAction(delhiActionActionButton)
ActionSheet.addAction(mumbaiActionActionButton)
self.presentViewController(ActionSheet, animated: true, completion: nil)
}
}
当您在 IB 中为 UIButton 设置标题时,它设置的不是 String
,而是 NSAttributedString
。所以你需要使用 setAttributedTitle(_:forState:)
方法来改变它而不是 setTitle(_:forState:)
@IBAction func setUpCityDropDown()
{
let ActionSheet = UIAlertController(title: "Which City?", message: "City Name", preferredStyle: .ActionSheet)
let cancelActionButton: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action in }
let delhiActionActionButton : UIAlertAction = UIAlertAction(title: "Delhi", style: .Default)
{
action in
self.city.setAttributedTitle(NSAttributedString(string: "Delhi"), forState: .Normal)
self.city.sizeToFit()
}
let mumbaiActionActionButton : UIAlertAction = UIAlertAction(title: "Mumbai", style: .Default)
{
action in
self.city.setAttributedTitle(NSAttributedString(string: "Mumbai"), forState: .Normal)
self.city.sizeToFit()
}
let ahmedabadActionButton : UIAlertAction = UIAlertAction(title: "Ahmedabad", style: .Default)
{
action in
self.city.setAttributedTitle(NSAttributedString(string: "Ahmedabad"), forState: .Normal)
self.city.sizeToFit()
}
ActionSheet.addAction(cancelActionButton)
ActionSheet.addAction(ahmedabadActionButton)
ActionSheet.addAction(delhiActionActionButton)
ActionSheet.addAction(mumbaiActionActionButton)
self.presentViewController(ActionSheet, animated: true, completion: nil)
}
}
我想更改 UIButton 的文字 city .
但是它不起作用,你能告诉我这里有什么问题吗?并且这个 IBAction setUpCityDropDown 连接到同一个 UIButton。
@IBAction func setUpCityDropDown()
{
let ActionSheet = UIAlertController(title: "Which City?", message: "City Name", preferredStyle: UIAlertControllerStyle.ActionSheet)
let cancelActionButton: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
}
let delhiActionActionButton : UIAlertAction = UIAlertAction(title: "Delhi", style: UIAlertActionStyle.Default)
{ action -> Void in
self.city.setTitle("Delhi", forState: UIControlState.Normal)
self.city.sizeToFit()
}
let mumbaiActionActionButton : UIAlertAction = UIAlertAction(title: "Mumbai", style: UIAlertActionStyle.Default)
{
action -> Void in
self.city.setTitle("Mumbai", forState: UIControlState.Normal)
self.city.sizeToFit()
}
let ahmedabadActionButton : UIAlertAction = UIAlertAction(title: "Ahmedabad", style: UIAlertActionStyle.Default)
{
action -> Void in
self.city.setTitle("Ahmedabad", forState: UIControlState.Normal)
self.city.sizeToFit()
}
ActionSheet.addAction(cancelActionButton)
ActionSheet.addAction(ahmedabadActionButton)
ActionSheet.addAction(delhiActionActionButton)
ActionSheet.addAction(mumbaiActionActionButton)
self.presentViewController(ActionSheet, animated: true, completion: nil)
}
}
当您在 IB 中为 UIButton 设置标题时,它设置的不是 String
,而是 NSAttributedString
。所以你需要使用 setAttributedTitle(_:forState:)
方法来改变它而不是 setTitle(_:forState:)
@IBAction func setUpCityDropDown()
{
let ActionSheet = UIAlertController(title: "Which City?", message: "City Name", preferredStyle: .ActionSheet)
let cancelActionButton: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action in }
let delhiActionActionButton : UIAlertAction = UIAlertAction(title: "Delhi", style: .Default)
{
action in
self.city.setAttributedTitle(NSAttributedString(string: "Delhi"), forState: .Normal)
self.city.sizeToFit()
}
let mumbaiActionActionButton : UIAlertAction = UIAlertAction(title: "Mumbai", style: .Default)
{
action in
self.city.setAttributedTitle(NSAttributedString(string: "Mumbai"), forState: .Normal)
self.city.sizeToFit()
}
let ahmedabadActionButton : UIAlertAction = UIAlertAction(title: "Ahmedabad", style: .Default)
{
action in
self.city.setAttributedTitle(NSAttributedString(string: "Ahmedabad"), forState: .Normal)
self.city.sizeToFit()
}
ActionSheet.addAction(cancelActionButton)
ActionSheet.addAction(ahmedabadActionButton)
ActionSheet.addAction(delhiActionActionButton)
ActionSheet.addAction(mumbaiActionActionButton)
self.presentViewController(ActionSheet, animated: true, completion: nil)
}
}