I am building with the release version of Xcode 7.0. No storyboards, just nib files.
I have a single UINavigationController
created by the app delegate
In my case, in Swift 3, I had missed the code below after adding the action
presentViewController(theAlert, animated: true, completion: nil)
So, the working code is as below
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if (editingStyle == UITableViewCellEditingStyle.Delete) {
let title = "Delete ????"
let message = "Are you sure you want to delete this item?"
let theAlert = UIAlertController(title: title,
message: message,
preferredStyle: .ActionSheet)
let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
theAlert.addAction(cancelAction)
let onDelete = UIAlertAction(title: "Delete", style: .Destructive, handler: { (action) -> Void in
self.items.removeAtIndex(indexPath.row)
self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
})
theAlert.addAction(onDelete)
presentViewController(theAlert, animated: true, completion: nil)
}
}
//Note I was using a sample array
var items = ["iPhone", "iPad", "Mac"]
I was finally able to track it down to a UIActionSheet
class variable inside a third-party library, Mapbox GL.
I opened an issue with that dev team: https://github.com/mapbox/mapbox-gl-native/issues/2475
Partial credit (and an up vote and bounty) to @Aaoli for mentioning having a UIAlertView
as a class variable.
I had this problem by not having a navigationController
... I know it sounds obvious but jumping about in various projects this one didn't have a UINavigationController
to hand.... so others coming here you might want to NSLog
your nav controller just for sanity too...
We had the same issue with UIAlertController
.
let alert = UIAlertController(title: "", message: "", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: {(action : UIAlertAction!) in
//some actions
} ))
I had forgot adding the following line. Below line solved the problem.
self.presentViewController(alert, animated: true, completion: nil)
I had the same issue, when I tried to remove a "frame" observer on my view in a UIViewController
subclass. I solved this issue by wrapping the removeObserver
in a isViewLoaded()
. What exactly are you observing?
I solved this by moving some of my code to viewDidAppear
. If I used UIAlertController
, it would cause the same problem you mentioned and would not be displayed, and I solved it the same way.
Let me know if that doesn't work!