2015-03-26 3 views
3

Я искал и рассмотрел несколько решений этой проблемы, но, похоже, у меня ничего не получается. Вот мой код и скриншот. Если это имеет значение, я вручную перетащил навигационную панель на вид и подключил выход. Спасибо. Я ценю любую помощь по этому поводу. enter image description hereКак добавить UIBarButtonItem программно в UINavigationBar, перетащили на вид

class SubjectsViewController: UIViewController { 

    @IBOutlet var myTableView: UITableView! 

    @IBOutlet var noBooksLabel: UILabel! 

    @IBOutlet var navigationBarTitle: UINavigationBar! 

    func backAction() -> Void { 

     self.navigationController?.popViewControllerAnimated(true) 

    } 

    override func viewWillAppear(animated: Bool) { 

     self.noBooksLabel.hidden = true 

    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     descriptions.removeAll(keepCapacity: true) 
     usernames.removeAll(keepCapacity: true) 
     imageFiles.removeAll(keepCapacity: true) 

     println("Subject view controller") 

     self.navigationBarTitle.topItem?.title = "\(selectedSubject)" 

     let backButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "backAction") 

     self.navigationItem.leftBarButtonItem = backButton 


     pickedSubject = selectedSubject 

     println("Picked Subject = \(pickedSubject)") 

     println("Subject view controller") 

     self.navigationBarTitle.topItem?.title = "\(selectedSubject)" 

     //let backButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "backAction") 
     //self.navigationItem.leftBarButtonItem=barBtn; 

     var subjectQuery = PFQuery(className: "BookPosting") 

     subjectQuery.whereKey("CourseSubject", equalTo: pickedSubject) 
     subjectQuery.findObjectsInBackgroundWithBlock { 

      (objects: [AnyObject]!, error: NSError!) -> Void in 

      if error == nil { 

       // The find succeeded. 
       println("Successfully retrieved \(objects.count) scores.") 

       // Do something with the found objects 
       if let objects = objects as? [PFObject] { 

        for object in objects { 

         descriptions.append(object["Description"] as String) 

         usernames.append(object["username"] as String) 

         imageFiles.append(object["imageFile"] as PFFile) 

         self.myTableView.reloadData() 

        } 

       } 

       println("descriptions.count = \(descriptions.count)") 



       if (descriptions.count == 0) { 

        self.noBooksLabel.hidden = false 

       } else { 

        self.noBooksLabel.hidden = true 

       } 

      } else { 

       // Log details of the failure 
       println("Error: \(error) \(error.userInfo!)") 

      } 

     } 

    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return descriptions.count 

    } 

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

     return 100 

    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     var cell: bookCell = tableView.dequeueReusableCellWithIdentifier("booksCells") as bookCell 


     cell.subjectBookDescription.text = descriptions[indexPath.row] 
     cell.subjectBookPosterUsername.text = usernames[indexPath.row] 

     imageFiles[indexPath.row].getDataInBackgroundWithBlock { (imageData: NSData!, error: NSError!) -> Void in 

      if error == nil { 

       let image = UIImage(data: imageData) 

       cell.subjectBookImage.image = image 

      } 

     } 

     return cell 
    } 




} 

ответ

3

Я предполагаю, что вы пытаетесь добавить UIBarButtonItem к панели навигации, подключенной к розетке navigationBarTitle.

Заменить self.navigationItem.leftBarButtonItem = backButton следующим:

self.navigationBarTitle.topItem?.leftBarButtonItem = backButton 
Смежные вопросы