2014-11-14 1 views
0

선택한 경우 책의 이름을 바꿀 수있는 경고보기가 표시됩니다. 사용자로부터 입력을받는 데 문제가 있습니다.swift alertview textfield - 입력 한 텍스트를 검색하는 방법

 let newBookAction = UIAlertAction(title: "Add New Book", style: .Default, handler: { 
      (alert: UIAlertAction!) -> Void in 


      var alert = UIAlertController(title: "Add New Book", message: "What is the Name of the New Book?", preferredStyle: UIAlertControllerStyle.Alert) 
      alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)) 
      alert.addTextFieldWithConfigurationHandler { (textField) in 
       textField.placeholder = "New Book Name" 
      } 

      self.currentShelf.addNewBook(Book(bookName: self.alert.textFields[0] as String)) 

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

      self.tableView.reloadData() 

      println("Book Added") 
     }) 

난이 간단한 수정 희망, 그리고 난 어떤 도움을 주셔서 감사합니다 :

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     let optionMenu = UIAlertController(title: nil, message: "Choose Option", preferredStyle: .ActionSheet) 

     let newBookAction = UIAlertAction(title: "Add New Book", style: .Default, handler: { 
      (alert: UIAlertAction!) -> Void in 


      var alert = UIAlertController(title: "Add New Book", message: "What is the Name of the New Book?", preferredStyle: UIAlertControllerStyle.Alert) 
      alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)) 
      alert.addTextFieldWithConfigurationHandler { (textField) in 
       textField.placeholder = "New Book Name" 
      } 

      self.currentShelf.addNewBook(Book(bookName: self.alert.textFields[0] as String)) 

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

      self.tableView.reloadData() 

      println("Book Added") 
     }) 

     let deleteAction = UIAlertAction(title: "Delete", style: .Default, handler: { 
      (alert: UIAlertAction!) -> Void in 
      self.currentShelf.allBooksOnShelf.removeAtIndex(indexPath.row) 
      self.tableView.reloadData() 
      println("Book Deleted") 
     }) 
     let updateAction = UIAlertAction(title: "Update", style: .Default, handler: { 
      (alert: UIAlertAction!) -> Void in 
      println("Book Updated") 
     }) 
     let readAction = UIAlertAction(title: "Read", style: .Default, handler: { 
     (alert: UIAlertAction!) -> Void in 
      if self.currentShelf.allBooksOnShelf[indexPath.row].hasBeenRead == false{ 
       self.currentShelf.allBooksOnShelf[indexPath.row].hasBeenRead = true 
       var alert = UIAlertController(title: "Read Book", message: "Thanks For Reading!", preferredStyle: UIAlertControllerStyle.Alert) 
       alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)) 
       self.presentViewController(alert, animated: true, completion: nil) 
       println("Book Read") 


      } 
      else{ 
       self.currentShelf.allBooksOnShelf[indexPath.row].hasBeenRead = false 
       var alert = UIAlertController(title: "Unread Book", message: "You Just UnRead A Book...", preferredStyle: UIAlertControllerStyle.Alert) 
       alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)) 
       self.presentViewController(alert, animated: true, completion: nil) 
       println("Book Unread") 
      } 

     }) 

     let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: { 
      (alert: UIAlertAction!) -> Void in 
      println("Cancelled") 
     }) 

     optionMenu.addAction(newBookAction) 
     optionMenu.addAction(readAction) 
     optionMenu.addAction(updateAction) 
     optionMenu.addAction(deleteAction) 
     optionMenu.addAction(cancelAction) 

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


} 

내가 문제로 실행 해요 그 자리는 다음과 같습니다

여기 내 코드입니다. 감사!

답변

2

새 문자열을 가져 와서 책 제목을 업데이트하는 데 사용하는 경고 컨트롤러의 완료 핸들러를 추가해야합니다. 다음과 같음 :

let newBookAction = UIAlertAction(title: "Add New Book", style: .Default, handler: { 
    (alert: UIAlertAction!) -> Void in 

    var alert = UIAlertController(title: "Add New Book", message: "What is the Name of the New Book?", preferredStyle: UIAlertControllerStyle.Alert) 
    alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)) 
    alert.addTextFieldWithConfigurationHandler { (textField) in 
     textField.placeholder = "New Book Name" 
    } 

    self.presentViewController(alert, animated: true) { 
     let textField = alert.textFields[0] as UITextField 
     self.currentShelf.addNewBook(Book(bookName: textField.text)) 
     self.tableView.reloadData() 
     println("Book Added") 
    } 
}) 
관련 문제