2016-04-13 2 views
0

У меня возникли проблемы с передачей данных после запуска приложения. Я пытаюсь изменить метку с предыдущего контроллера представлений после выбора ячейки таблицы таблицы. Может ли кто-нибудь помочь мне пойти туда ошибка?Ошибка делегата в swift 2

view controller

class AircraftSearch: UIViewController ,SendbackDelegate{ 

    @IBOutlet weak var Mabda: UIButton! 
    @IBOutlet weak var maghsad: UIButton! 
    @IBOutlet weak var labelcity: UILabel! 


    var Airurl = NSURL() 
    var ScrOrDstArray = [MabdaAndMaghsad]() 
    var origin = [String]() // save mabda 
    var purpose = [String]() // save maghsad 
    var sendDataToTableview = [String]() 




    override func viewDidLoad() { 
     super.viewDidLoad() 
     GetPassCity() 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func selectMabda(sender: AnyObject) { 
     sendDataToTableview = origin 
     performSegueWithIdentifier("SelectedCellSegue", sender: sender) 


    } 

    @IBAction func selectMaghsad(sender: AnyObject) { 
     sendDataToTableview = purpose 
     print(sendDataToTableview) 
     performSegueWithIdentifier("SelectedCellSegue", sender: sender) 

    } 


    func originAndpurpose() { 
     let dataCity = ScrOrDstArray 
     for i in dataCity{ 

      if i.SrcOrDst == true{ 
       origin.append(i.Name) 
      }else{ 
       purpose.append(i.Name) 
      } 
     } 
    } 



    func GetPassCity(){ 
     let actInd : UIActivityIndicatorView  = UIActivityIndicatorView(frame: CGRectMake(0,0, 50, 50)) as UIActivityIndicatorView 
     actInd.center       = self.view.center 
     actInd.hidesWhenStopped     = true 
     actInd.activityIndicatorViewStyle  = UIActivityIndicatorViewStyle.Gray 
     view.addSubview(actInd) 
     actInd.startAnimating() 

     NSURLSession.sharedSession().dataTaskWithURL(Airurl){ (data ,response ,error) in 
      if error != nil{ 
       print("A") 
       print(error!) 
      }else{ 

       do{ 
        //readin data from Server 
        let posts = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! [[String:AnyObject]] 
        //save data 
        for post in posts{ 
         var postCity:MabdaAndMaghsad? 
         if let Id   = post["Id"]  as? Int  , 
          let nameCity = post["Name"]  as? String , 
          let SrcOrDst = post["SrcOrDst"] as? Bool 
         { 
          postCity = MabdaAndMaghsad(ID: Id, Name: nameCity, SrcOrDst: SrcOrDst) 
         } 
         self.ScrOrDstArray.append(postCity!) 

        } 

        //=============== 

        dispatch_async(dispatch_get_main_queue()){ 
         actInd.stopAnimating() 
         self.originAndpurpose() 
         print(self.origin) 
         print("=======") 
        // print(self.purpose) 
        } 

       }catch let error as NSError{ 

        print("B") 
        print(error) 
       } 
      } 


      }.resume() 

    } 


    func sendNameToPreviousVC(SelectCity: String) { 
     labelcity.text = SelectCity 

    } 


    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "SelectedCellSegue" { 
      if let VC = segue.destinationViewController as? SelectedCity { 

       VC.toTake = sendDataToTableview 
       VC.delegate = self 
      } 
     } 

    } 

} 

and tableview Controller import UIKit protocol SendbackDelegate:class { func sendNameToPreviousVC(City:String) }

class SelectedCity: UITableViewController { 
    var toTake = [String]() 
    var selecteCity = String() 
    weak var delegate: SendbackDelegate? = nil 

    override func viewDidLoad() { 
     super.viewDidLoad() 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: - Table view data source 


    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     // #warning Incomplete implementation, return the number of sections 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     // #warning Incomplete implementation, return the number of rows 
     return toTake.count ?? 0 

    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("stcell", forIndexPath: indexPath) as? mAndMCell 

     let nameCity = toTake[indexPath.row] 
     print(nameCity) 

     cell!.nameCityLabel.text = nameCity 
     return cell! 
    } 

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

     let indexPath = tableView.indexPathForSelectedRow! 
     let currentCell = tableView.cellForRowAtIndexPath(indexPath) as! mAndMCell! 

     selecteCity = currentCell.nameCityLabel!.text as String! 

     sendBackIdCity(selecteCity) 
     navigationController?.popViewControllerAnimated(true) 



    } 
    func sendBackIdCity(name: String){ 
     self.delegate?.sendNameToPreviousVC(name) 

    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "backCitySegue"{ 
      var VCOne = segue.destinationViewController as? AircraftSearch 
       VCOne.delegate = self 


     } 
    } 



} 

ошибка линии VCOne.delegate = self

ошибки = Value of type 'AircraftSearch?' has no member 'delegate'

+0

Пожалуйста, не изменяйте суть вашего вопроса, но подумайте о том, чтобы принять мой ответ за одну проблему, которую вы имели в первую очередь! Тогда google для вашей новой проблемы, поскольку для этого уже существует множество решений. Если вы в конечном итоге не сможете решить проблему самостоятельно, попросите * отправить новый * вопрос. – luk2302

+0

@ luk2302 Принуждение OP к принятию вашего ответа тоже не круто. – trojanfoe

+0

@trojanfoe, по-видимому, ответил на его вопрос, не так ли? Поскольку его программа компилируется, запускается и выдает другую ошибку - какой должен быть правильный ответ? (Я немного перефразировал его, проголодался так, как это звучало ранее) – luk2302

ответ

0

Линия должна быть, вероятно,

self.delegate = VCOne 

поскольку self является SelectedCity, который имеет свойство delegate и VCOne имеет тип AircraftSearch и поэтому являетсяSendbackDelegate!

+0

Редактировать проблему. Вы можете проверить agein ?? – Shadow

+0

@ Shadow нет, это другая проблема. Попробуйте придумать решение для это само по себе.Я вернул ваше редактирование, чтобы отразить предыдущий вопрос. – luk2302

+0

, когда я меняю self.delegate = VCOne. эта строка фатальная ошибка: labelcity! .text = SelectCity – Shadow

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