0

У меня есть tableView с NSFetchedResultsController! Я полностью выполнил методы делегатов NSFetchedResultsController и отлично работает! Моя проблемная строка представляет UIAlertController. UIAlertController хорошо работает на tableView, но не работает внутри UISearchController. Я пытаюсь удалить объекты внутри UISearchController. При нажатии на кнопку удаления Xcode дает мне ошибку следующим образом:«Данные Swift Core» и UISearchController

<code>2016-03-05 07:37:42.456 UISearchController[8289:180216] Warning: Attempt to present <UIAlertController: 0x7ff7a046f740> on <UISearchController.MainTableViewController: 0x7ff7a2919240> which is already presenting (null)</code>

Вот коды моего commitEditingStyle метода и UIAlertController, UIAlertAction «s handler:

` // Override для поддержки редактирования вида таблицы , переопределение функ Tableview (Tableview: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { если editingStyle == .Delete {

 let itemToDelete:Manager = self.fetchedResultsController.objectAtIndexPath(indexPath) as! Manager 
     prepareForDelete(itemToDelete) 

     // Delete the row from the data source 
     //tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    } else if editingStyle == .Insert { 
     // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
    }  
} 

// Delete Action 
var itemsToDelete:Manager! 

// Delete function 

частная функ prepareForDelete (managedObject: менеджер) {

// 
    self.itemsToDelete = managedObject 

    // Alert 
    let alert:UIAlertController = UIAlertController(title: "Warning!", message: "Do you want to delete this note?", preferredStyle: UIAlertControllerStyle.Alert) 

    // Actions 
    let deleteAction:UIAlertAction = UIAlertAction(title: "Delete", style: UIAlertActionStyle.Destructive, handler: deleteHandler) 

    // Actions 
    let cancelAction:UIAlertAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil) 

    // Add actions to the alert 
    alert.addAction(deleteAction) 
    alert.addAction(cancelAction) 

    // Present alert 
    self.presentViewController(alert, animated: true, completion: nil) 
} 

func deleteHandler(alert:UIAlertAction) -> Void { 

    // Delete from the moc 
    if let delete = self.itemsToDelete { 
     self.managedObjectContext.deleteObject(delete) 
     do { 
      // Save changes 
      try self.managedObjectContext.save() 
     } catch { 

     } 
     self.itemsToDelete = nil 
    } 
}` 

Как отключить UIAlertController? Мне не нужны оповещения внутри UISearchController. Поскольку эта функция не работает внутри UISearchController

Спасибо за внимание!

+0

Итак, если вы ищете, вы не хотите, чтобы предупреждение всплывало - не удалялось? – tktsubota

+0

Я хочу удалить объекты с предупреждением на 'tableView'! Это работает хорошо. Но я не могу удалять объекты внутри 'UISearchController', когда активен' UISearchController'. Мне нужны предупреждения на 'tableView', вне' UISearchController'! Но мне не нужно этого. –

+0

Спасибо за внимание –

ответ

1

Вы можете проверить, активен ли ваш контроллер поиска (я предполагаю, что у вас есть ссылка на ваш контроллер поиска в контроллере представления).

Добавьте это к началу prepareForDelete:

guard !searchController.active else { return } 

, что код проверяет, является ли контроллер поиска не активен, но если она есть, она не выполняет никакого кода.

+0

Ok! Я попробую ... Еще раз спасибо. –

+0

Если вам нужно? Я предоставлю больше кодов. –

+0

@AmateurUser Это сработало? – tktsubota

Смежные вопросы