我已经搜索并查看了针对此问题的多种解决方案,但似乎对我没有任何帮助。这是我的代码和屏幕截图。如果有什么不同,我手动将导航栏拖动到视图上并连接插座。我对此表示感谢。
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
}
}
最佳答案
我假设您正在尝试将UIBarButtonItem添加到连接到出口NavigationBarTitle的导航栏中。
将self.navigationItem.leftBarButtonItem = backButton
替换为以下内容:
self.navigationBarTitle.topItem?.leftBarButtonItem = backButton