2017-02-13 14 views
0

Как скрыть и показать кнопку в viewcontroller, например UserRole = «Администратор» показывает кнопку, а UserRole = «Пользователь» скрывает кнопку. Я написал код в классе AppDelegate ниже и как написать метод с точки зрения контроллера класса скрывать и показывать имя buttonMethod является: isItAdminOrNotКак скрыть/показать кнопку в режиме просмотра с помощью Swift?

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { 
    //var email = (String)() 

    if (error == nil) { 
     let givenName = user.profile.name 
     let email = user.profile.email 

     let param = ["UserName": givenName!, "Email": email!] as Dictionary<String, String> 

     let request = NSMutableURLRequest(url: NSURL(string: "http://beta.json-generator.com/api/json/get/EJoC6gB_z")! as URL) 

     let session = URLSession.shared 
     request.httpMethod = "POST" 

     //Note : Add the corresponding "Content-Type" and "Accept" header. In this example I had used the application/json. 
     request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
     request.addValue("application/json", forHTTPHeaderField: "Accept") 

     request.httpBody = try! JSONSerialization.data(withJSONObject: param, options: []) 

     let task = session.dataTask(with: request as URLRequest) { data, response, error in 
      guard data != nil else { 
       print("no data found: \(error)") 
       return 
      } 

      do { 
       if let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String: AnyObject] { 

        print("Response: \(json)") 

        let USerresponse = json["UserRole"] as! String 
        print(USerresponse) 
        DispatchQueue.main.async { 
         // now update UI on main thread 

         DispatchQueue.main.async { 
          // now update UI on main thread 
          self.userRoleValue(userRole: USerresponse) 
         } 
        } 
       } else { 
        let jsonStr = String(data: data!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) // No error thrown, but not NSDictionary 
        print("Error could not parse JSON: \(jsonStr)") 


        if let data1 = jsonStr?.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) { 

         do { 
          if let dictionary = try JSONSerialization.jsonObject(with: data1, options: JSONSerialization.ReadingOptions.mutableContainers) as? [AnyObject] { 

           let arrayVlaues = dictionary as Array 
           print(arrayVlaues[0]) 
           let userRole = arrayVlaues[0].value(forKey: "UserRole") as! String 

           DispatchQueue.main.async { 
            // now update UI on main thread 
            self.userRoleValue(userRole: userRole) 
           } 


          } 
         } 
        } 

       } 
      } catch let parseError { 
       print(parseError)// Log the error thrown by `JSONObjectWithData` 
       let jsonStr = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) 
       print("Error could not parse JSON: '\(jsonStr)'") 
      } 
     } 

     task.resume() 

     // ... 
    } else { 
     print("\(error.localizedDescription)") 
    } 
} 

func userRoleValue(userRole: String) { 
    if(userRole == "User") { 
     self.loadParticlularController(value: 1) 
    } else if(userRole == "Admin") { 
     self.loadParticlularController(value: 2) 
    } else if(userRole == "NewUser") { 
     self.loadParticlularController(value: 0) 
    } 
} 

func loadParticlularController(value: Int) { 
    print(value) 

    let myStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    var pageNav: UINavigationController; 
    let appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate 

    // New User 
    if (value == 0) { 
     let homePage = myStoryBoard.instantiateViewController(withIdentifier: "ApprovalUser") as! ApprovalUser 

     pageNav = UINavigationController(rootViewController: homePage) 
     appDelegate.window?.rootViewController = pageNav 
    } else if(value == 1) { // Existing User 
     let homePage = myStoryBoard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController 

     homePage.isItAdminOrNot(val: false) 

     pageNav = UINavigationController(rootViewController: homePage) 
     appDelegate.window?.rootViewController = pageNav 
    } else if(value == 2) { // Existing User with Admin 
     let homePage = myStoryBoard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController 
     homePage.isItAdminOrNot(val: true) 

     pageNav = UINavigationController(rootViewController: homePage) 
     appDelegate.window?.rootViewController = pageNav 
    } 
} 
+0

просто использовать 'button.hidden = true'? – Tj3n

+0

привет, но поднят вопрос, как написать функцию в контроллере домашнего просмотра, если userRole = «Admin», а затем показать кнопку, и UserRole = «Пользователь» скрыть кнопку –

+0

Вы отправились в Google и просматривали эту страницу? http://stackoverflow.com/a/41230038/406677 –

ответ

0

Попробуйте как,

Если затем имя кнопки является homePageButton то,

homePageButton.isHidden = true 
homePageButton.isHidden = false 

в viewDidLoad или viewWillAppear методом HomeViewController, чтобы показать/скрыть кнопку.

0

Под вашим

homePage.isItAdminOrNot(val: false) 

Добавить это:

homePage.button.isHidden = true 
+0

Спасибо, но как писать в этом коде функция типа boolean isItAdminOrNot {} –

+0

isItAdminOrNot - это ваш HomeViewController класс потому что я видел, что вы его здесь установили: let homePage = myStoryBoard.instantiateViewController (withIdentifier: «HomeViewController») как! HomeViewController homePage.isItAdminOrNot (значение ложь) –

+0

вы уже установили isItAdminOrNot в файле appDelegate.swift –