Say I want to present a UIAlertController
:
import UIKit
class ViewController: UIViewController {
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let alert = UIAlertController(title: "Alert!", message: "Whoops.", preferredStyle: .Alert)
let dismiss = UIAlertAction(title: "Go back.", style: .Default) { (_) in }
alert.addAction(dismiss)
self.presentViewController(alert, animated: true, completion: nil)
}
}
Elsewhere in the app, I've got a UICollectionView
, which I'm styling using UIAppearance
in my AppDelegate
(best to follow Mattt Thompson's advice):
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UICollectionViewCell.appearance().backgroundColor = UIColor.blackColor()
return true
}
This turns the background of the UIAlertAction
buttons black, which isn't what I intended.
I tried using the new appearanceWhenContainedInInstancesOfClasses functionality in iOS 9 to restore the default styling...
UICollectionViewCell.appearanceWhenContainedInInstancesOfClasses([UIAlertController.self]).backgroundColor = nil
...but this gives me an EXC_BAD_ACCESS
error on that line.
How can I use UICollectionViewCell.appearance()
, without disrupting my UIAlertController
styling?