2015-07-21 125 views
0

我想加載我的視圖控制器一個navItem.rightBarButtonItem並根據一組情況更改爲另一個。看起來好像我只能加載一次,在viewDidLoad。更改圖標後是否有更新酒吧按鈕項目的方法?重新加載UINavigationItem

func viewDidLoad() { 
    var iconOne = UIImage(named: "button") 
    let buttonOne = UIBarButtonItem(image: iconOne, style: UIBarButtonItemStyle.Plain, target: self, action: "funcOne") 
    self.navItem.rightBarButtonItem = buttonOne 

    //perform async query, if a condition holds true then: 

    var iconTwo = UIImage(named: "buttonTwo") 
    let buttonTwo = UIBarButtonItem(image: iconTwo, style: UIBarButtonItemStyle.Plain, target: self, action: "funcTwo") 
    self.navItem.rightBarButtonItem = buttonTwo 
} 

全碼:

override func viewDidLoad() { 
     super.viewDidLoad() 


     // Sets custom nav bar view so we can add multiple bar buttons 
     navBar = UINavigationBar(frame: CGRectMake(0, 20, UIScreen.mainScreen().bounds.size.width, 44)) 
     navBar.barTintColor = UIColor.blackColor() // Sets bar to black 
     navBar.translucent = false 
     self.view.addSubview(navBar) 
     navItem = UINavigationItem(title: "\(name)") // Sets title 
     navBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "Helvetica Neue", size: 25)!, NSForegroundColorAttributeName: UIColor.whiteColor()] 
// Set icons 
      var backIcon = UIImage(named: "backButton") 
      let backButton = UIBarButtonItem(image: backIcon, style: UIBarButtonItemStyle.Plain, target: self, action: "backButton") 
      navItem.leftBarButtonItem = backButton 

      var userQuery = PFQuery(className: "Followers") 
      userQuery.whereKey("following", equalTo: username) 
      userQuery.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in 
       if error == nil { 

        if let objects = objects { 

         for object in objects { 

          if let follower = object["follower"] as? String { 
           if follower == PFUser.currentUser()!.username! { 
            var followingIcon = UIImage(named: "followingButton") 
            let followingButton = UIBarButtonItem(image: followingIcon, style: UIBarButtonItemStyle.Plain, target: self, action: "unfollowUser") 
            self.navItem.rightBarButtonItem = followingButton 

            self.navItem.rightBarButtonItem?.tintColor = UIColor.orangeColor() 
           } else { 

            var followIcon = UIImage(named: "followButton") 
            let followButton = UIBarButtonItem(image: followIcon, style: UIBarButtonItemStyle.Plain, target: self, action: "followUser") 
            self.navItem.rightBarButtonItem = followButton 


            self.navItem.rightBarButtonItem?.tintColor = UIColor.darkGrayColor() 
           } 
          } 
         } 

        } 
       } else { 
        println(error) 
       } 
      }) 
+0

您的代碼正在工作..那麼問題是什麼? – iRiziya

+0

@FrequencyMatched這不起作用。只有'buttonOne'加載。如果我嘗試在異步函數後將其更改爲'buttonTwo',則不會加載'buttonTwo'。 – chicobermuda

+0

你能粘貼完整的代碼嗎? – iRiziya

回答

0

我不知道這是可能的。所以,我製作了自己的自定義視圖,其中每個欄按鈕項都是。我將我的右欄按鈕項目設置爲var rightButton = UIButton(frame: CGRectMake(UIScreen.mainScreen().bounds.width - 50, 25, 30, 30)),添加了一個操作,並將子視圖添加到視圖中。