"Application tried to present modally an active controller" iOS8 - 当我想在注销时显示一个 AlertView
"Application tried to present modally an active controller" iOS8 - When i want to present an AlertView in logging out
好吧,我在 swift 2 方面确实是个初学者,我在 presentViewController
中遇到错误,这只是注销前的警告视图。但是我收到了一个应用程序,试图以模态方式呈现一个活动的控制器。嗯,我有一个菜单栏,使用 SWRevealViewController
和 MenuBarTableViewController
class 来保存菜单栏。 Logout
按钮在菜单栏的最后一个选择上,我正在浏览每个菜单并且它工作正常但是这个 Logout AlertView
使它崩溃并出现该错误。这是代码。
class MenuBarTableViewController: UITableViewController {
private struct PMText {
static let logoutBody = "Are you sure you want to log out?"
}
var alert = UIAlertController(title: "Logout", message: PMText.logoutBody, preferredStyle: UIAlertControllerStyle.Alert)
override func viewDidLoad() {
super.viewDidLoad()
alert.addAction(UIAlertAction(
title: "No",
style: UIAlertActionStyle.Cancel)
{ (action: UIAlertAction) -> Void in
//do nothing just to close the alertView
}
)
alert.addAction(UIAlertAction(
title: "Yes",
style: UIAlertActionStyle.Default)
{ (action: UIAlertAction) -> Void in
self.performSegueWithIdentifier("log out", sender: nil)
}
)
tableView.separatorColor = UIColor.clearColor()
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
for index in 0..<tableView.numberOfRowsInSection(indexPath.section) {
let cellIndexPath = NSIndexPath(forRow: index, inSection: indexPath.section)
let cell = tableView.cellForRowAtIndexPath(cellIndexPath)!
if index == indexPath.row {
cell.backgroundColor = UIColor(red: 254/255, green: 255/255, blue: 197/255, alpha: 1)
} else {
cell.backgroundColor = UIColor.whiteColor()
}
if (indexPath.row == 6) {
presentViewController(alert, animated: true, completion: nil)
}
}
}
}
我不确定是什么导致我的代码崩溃并收到这种异常,因为我在我的另一个视图控制器中多次执行警报视图控制器。但这是我第一次在 MenuBarTableViewController
尝试这个
我找到了一个解决方案,方法是使用 SWReveal 为菜单栏创建一个普通的 swift 文件,而不是创建一个 cocoa 触摸文件。所以它现在 import Foundation
而不是 import UIKit
。菜单栏滑块有问题,因为滑块在 cocoa 触摸时被视为控制器,而 AlertView 是另一个要显示的视图控制器。
好吧,我在 swift 2 方面确实是个初学者,我在 presentViewController
中遇到错误,这只是注销前的警告视图。但是我收到了一个应用程序,试图以模态方式呈现一个活动的控制器。嗯,我有一个菜单栏,使用 SWRevealViewController
和 MenuBarTableViewController
class 来保存菜单栏。 Logout
按钮在菜单栏的最后一个选择上,我正在浏览每个菜单并且它工作正常但是这个 Logout AlertView
使它崩溃并出现该错误。这是代码。
class MenuBarTableViewController: UITableViewController {
private struct PMText {
static let logoutBody = "Are you sure you want to log out?"
}
var alert = UIAlertController(title: "Logout", message: PMText.logoutBody, preferredStyle: UIAlertControllerStyle.Alert)
override func viewDidLoad() {
super.viewDidLoad()
alert.addAction(UIAlertAction(
title: "No",
style: UIAlertActionStyle.Cancel)
{ (action: UIAlertAction) -> Void in
//do nothing just to close the alertView
}
)
alert.addAction(UIAlertAction(
title: "Yes",
style: UIAlertActionStyle.Default)
{ (action: UIAlertAction) -> Void in
self.performSegueWithIdentifier("log out", sender: nil)
}
)
tableView.separatorColor = UIColor.clearColor()
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
for index in 0..<tableView.numberOfRowsInSection(indexPath.section) {
let cellIndexPath = NSIndexPath(forRow: index, inSection: indexPath.section)
let cell = tableView.cellForRowAtIndexPath(cellIndexPath)!
if index == indexPath.row {
cell.backgroundColor = UIColor(red: 254/255, green: 255/255, blue: 197/255, alpha: 1)
} else {
cell.backgroundColor = UIColor.whiteColor()
}
if (indexPath.row == 6) {
presentViewController(alert, animated: true, completion: nil)
}
}
}
}
我不确定是什么导致我的代码崩溃并收到这种异常,因为我在我的另一个视图控制器中多次执行警报视图控制器。但这是我第一次在 MenuBarTableViewController
我找到了一个解决方案,方法是使用 SWReveal 为菜单栏创建一个普通的 swift 文件,而不是创建一个 cocoa 触摸文件。所以它现在 import Foundation
而不是 import UIKit
。菜单栏滑块有问题,因为滑块在 cocoa 触摸时被视为控制器,而 AlertView 是另一个要显示的视图控制器。