61

When using a UIAlertController, if I want to present a UIActionSheet with an empty title and an empty message, the frame for the expected placement of the title and/or message remains.

How do I change this so that I only present an ActionSheet that reads:

Settings
Sign out
Cancel ?

Thanks!

UIAlertController example

SSteve
  • 10,550
  • 5
  • 46
  • 72
vlin
  • 825
  • 1
  • 6
  • 13

6 Answers6

144

When I create a UIAlertController with this code I don't have the title spacing.

[UIAlertController alertControllerWithTitle:nil
                                    message:nil
                             preferredStyle:UIAlertControllerStyleActionSheet];

Are you passing in nil for the title and message or empty strings?

aahrens
  • 5,522
  • 7
  • 39
  • 63
18

Update Swift 4:

let alert = UIAlertController(title: nil, message: nil, preferredStyle: UIAlertControllerStyle.actionSheet)

Just need to pass nil to title and message params.

halfer
  • 19,824
  • 17
  • 99
  • 186
Harjot Singh
  • 6,767
  • 2
  • 38
  • 34
6

If you want to change in run time depending on a certain case just write:

actionController.title = nil
actionController.message = nil

Gabriel Jensen
  • 4,082
  • 1
  • 17
  • 14
beee
  • 442
  • 5
  • 9
1

In swift 2.2, you can use code below and I have also changed the color of signout action button

        let actionSheet: UIAlertController = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)

    self.presentViewController(actionSheet, animated: true, completion: nil)

    let settingsActionButton: UIAlertAction = UIAlertAction(title: "Settings", style: .Cancel) { action -> Void in
        print("Settings Tapped")
    }

    reportActionSheet.addAction(settingsActionButton)

    let signOutActionButton: UIAlertAction = UIAlertAction(title: "Signout", style: .Default)
    { action -> Void in
        //Clear All Method
        print("Signout Tapped")

    }

    signOutActionButton.setValue(UIColor.redColor(), forKey: "titleTextColor")

    actionSheet.addAction(signOutActionButton)

    let cancelActionButton: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
        print("Cancel Tapped")
    }

    reportActionSheet.addAction(cancelActionButton)
Mohsin Qureshi
  • 1,203
  • 2
  • 16
  • 26
0

if you want to remove Alert controller top area space. Add Alert controller height

let height:NSLayoutConstraint = NSLayoutConstraint(item: alert.view, attribute: NSLayoutConstraint.Attribute.height, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 100)
alert.view.addConstraint(height);

enter image description here

deepak
  • 78
  • 4
-1

UIAlertController *controller=[UIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:UIAlertControllerStyleAlert];//style check

UIAlertAction *first = [UIAlertAction actionWithTitle: @"Login with Facebook" style: UIAlertActionStyleDefault handler:^(UIAlertAction *action)
{
   //write to perform action

}];


[controller addAction: first];



UIAlertAction *second = [UIAlertAction actionWithTitle: @"Guest User" style: UIAlertActionStyleDefault handler:^(UIAlertAction *action)

{ //write to perform action

}];

[controller addAction:second];


UIAlertAction *third=[UIAlertAction actionWithTitle:@"Registered User" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action)


{
    //write to perform action

}];

[controller addAction:third];

[self presentViewController: controller animated: YES completion: nil];