2015-07-02 2 views
1

У меня есть кнопка в каждой ячейке в tableviewcell. Когда кнопка нажата, на странице кодирования ячейки у меня было действие, которое уже работало. Однако я решил разрешить пользователям подтвердить это до начала действия, поэтому добавлено UIAlertController внутри действия. Контроллер предупреждения работает нормально в UIviewcontroller, но в UItableviewcell с кодом ниже я получил сообщение об ошибке: «не имеет члена с именем presentviewcontroller». Как я могу заставить его работать? Мой код здесь. ThanksUIAlertController в таблицеViewCell - Swift

@IBAction func followBtn_click(sender: AnyObject) { 



     if title == "Following" { 

      var refreshAlert = UIAlertController(title: "Sure?", message: "Do you want to unfollow this person?", preferredStyle: UIAlertControllerStyle.Alert) 
      refreshAlert.addAction(UIAlertAction(title: "Yes", style: .Default, handler: { (action: UIAlertAction!) in 

      var query = PFQuery(className: "follow") 

      query.whereKey("user", equalTo: PFUser.currentUser()!.username!) 
      query.whereKey("userToFollow", equalTo: usernameLbl.text!) 

      var objects = query.findObjects() 

      for object in objects! { 

       object.delete() 

      } 

      })) 

      refreshAlert.addAction(UIAlertAction(title: "No", style: .Default, handler: { (action: UIAlertAction!) in 
       println("Cancel unfollow") 
      })) 

      self.presentViewController(refreshAlert, animated: true, completion: nil) 

     /* self.window?.rootViewController?.presentViewController(refreshAlert, animated: true, completion: nil) 

      when I use the above to make it run, the code runs but nothing happens and I get the warning below in the output area 

      2015-07-02 08:57:22.978 MyLast[968:200872] Warning: Attempt to present <UIAlertController: 0x7f849c04ed20> on <UINavigationController: 0x7f8499c69020> whose view is not in the window hierarchy! 



      */ 



     } 

     else { 

      println(“rest will work”) 
      /* rest of the code */ 

     } 


} 

ответ

3

Убедитесь, что ваш контроллер табличного представления находится в иерархии навигационного контроллера или встроен в UINavigationController. Поскольку UIAlertView устарел в быстром режиме, и есть UIAlertViewController, и всякий раз, когда вам требуется или для представления Alert, у вас должна быть иерархия контроллера.

Вы также можете показать ActionSheet, используя тот же код, с небольшими изменениями. UIAlertControllerStyle - это лист действий.

друг от друга предложения однократно попробуйте удалить код обработчика к нолю

alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)) 
+0

Здравствуйте, будет действие листовой в UITableViewCell непосредственно? Как я могу использовать его? – saner

+0

http://stackoverflow.com/questions/24172605/uiactionsheet-with-swift –

+0

Здесь Полный код http://www.ioscreator.com/tutorials/action-sheet-tutorial-ios8-swift –