У меня есть длинный жест нажатия, установленный на UITableView
, который представляет UIAlertController
, содержащий текст ячейки. Когда представлен UIAlertController
, я получаю это предупреждение:
Attempt to present <UIAlertController: 0x7fd57384e8e0> on <TaskAppV2.MainTaskView: 0x7fd571701150> which is already presenting (null)
Из моего понимания, MainTaskView (UITableView
) уже представляет представление, поэтому он не должен представлять второй вид, UIAlertController.
Итак, я попробовал this решение по аналогичному вопросу. Это не работает, поскольку я получаю такое же предупреждение. Что я могу сделать, чтобы решить это предупреждение? См. Ниже код:
func longPressedView(gestureRecognizer: UIGestureRecognizer){
/*Get cell info from where user tapped*/
if (gestureRecognizer.state == UIGestureRecognizerState.Ended) {
var tapLocation: CGPoint = gestureRecognizer.locationInView(self.tableView)
var tappedIndexPath: NSIndexPath? = self.tableView.indexPathForRowAtPoint(tapLocation)
if (tappedIndexPath != nil) {
var tappedCell: UITableViewCell? = self.tableView.cellForRowAtIndexPath(tappedIndexPath!)
println("the cell task name is \(tappedCell!.textLabel!.text!)")
} else {
println("You didn't tap on a cell")
}
}
/*Long press alert*/
let tapAlert = UIAlertController(title: "Long Pressed", message: "You just long pressed the long press view", preferredStyle: UIAlertControllerStyle.Alert)
tapAlert.addAction(UIAlertAction(title: "OK", style: .Destructive, handler: nil))
/*
if (self.presentedViewController == nil) {
self.presentViewController(tapAlert, animated: true, completion: nil)
} else {
println("already presenting a view")
} */
self.presentViewController(tapAlert, animated: true, completion: nil)
println("presented")
}
Выход консоли:
presented
You didn't tap on a cell
2015-05-19 22:46:35.692 TaskAppV2[60765:3235207] Warning: Attempt to present <UIAlertController: 0x7fc689e05d80> on <TaskAppV2.MainTaskView: 0x7fc689fc33f0> which is already presenting (null)
presented
По какой-то причине обе части кода выполняются в инструкции if, когда происходит длительный жест нажатия. Появляется предупреждение, и текст печатается на консоли. Это проблема?
Изменить: Как сказал Мэтт, у меня не было всего моего кода в рамках теста распознавания жестов. Перемещение этого в моей проблеме. Код за пределами теста выполнялся дважды, в результате чего UIAlertController
представлялся дважды.