Ketul Patani Ketul Patani - 5 months ago 28
iOS Question

How to change the text of UIButton from ActionSheet

I want to change the text of UIButton city .

But its not working, can you tell me whats the problem here? And this IBAction setUpCityDropDown is connected to same 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)
}

}


enter image description here

Answer

When you setup title in IB for UIButton, it setting up not as String, but as NSAttributedString. So you need use setAttributedTitle(_:forState:) method to change it instead of 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)
    }
}
Comments