swift4
xcode9.2
一番下のコードLoginControllerにFBSDKログインを実装しています。
ログイン後CustomTabBarControllerへ遷移します。
CustomTabBarControllerの一部です。 //1 のように紐づけられた4つのビューを定義し、viewControllersでまとめています。 プロトコルにUINavigationControllerなどはありません。 ... // 1 let syutsudaiController = syutsudaiController() syutsudaiController.navigationItem.title = "出題" let firstNavigationController = UINavigationController(rootViewController: syutsudaiController) firstNavigationController.title = "" firstNavigationController.tabBarItem.image = UIImage(named: "yubi") ...
CustomTabBar...の
self.navigationItem.hidesBackButton = true
にすると<Back ボタンが消え、ナビバーには何も表示されません。
CustomTabBar...をfalseにして、逆に
紐づけられた4つのビューの
self.navigationItem.hidesBackButton = true
にしても<Back ボタンは表示されます。
私があらかじめ実装していたボタンAを
self.navigationItem.leftBarButtonItemで表示していたのですが、
CustomTabBar...のhidesBackButton = falseにしても、
<Backボタンが表示されていまい、ボタンAを無くなりました。
LoginControllerを介さず、
イニシャルビューをCustomTabBarControllerとして起動すれば、ボタンAは表示されます。
原因がわからない為、質問させていただきます。
よろしくお願いします。
LoginControllerです import UIKit import Firebase import FBSDKLoginKit import FBSDKCoreKit import FirebaseAuth import FirebaseDatabase class LoginController: UIViewController, FBSDKLoginButtonDelegate { override func viewDidLoad() { super.viewDidLoad() self.navigationItem.hidesBackButton = true //すでにログインしてる時???? if (FBSDKAccessToken.current() != nil) { let vc = CustomTabBarController() self.navigationController?.pushViewController(vc, animated: true) } else { //FBログイン let loginButton = FBSDKLoginButton() view.backgroundColor = .white loginButton.frame = CGRect(x: 16, y: 200, width: view.frame.width - 32, height: 50) loginButton.delegate = self loginButton.readPermissions = ["email", "public_profile"] view.addSubview(loginButton) } } //FBログイン func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { if error != nil { print("エラー") } else if result.isCancelled { print("キャンセル") } //コンソールに表示 FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "id, name, email"]).start { (connection, result, error) in if error != nil { print("Failed to start graph requeest", error!) return } fb() print(result!) } func fb() { let accessToken = FBSDKAccessToken.current() guard let accessTokenString = accessToken?.tokenString else { return } let credentials = FacebookAuthProvider.credential(withAccessToken: accessTokenString) Auth.auth().signIn(with: credentials, completion: { (user, error) in if error != nil { print("Something went wrong with our FB user: ", error ?? "") return } else { print("Successfully logged in with our FB user: ", user ?? "") let vc = CustomTabBarController() self.navigationController?.pushViewController(vc, animated: true) } }) } } func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { print("ログアウト") } }
//追記しました。
内容に不備があった為、大幅に本文を修正しました。申し訳ありません。
//syutsudaiControllerコードを追記しました。
syutsudaiControllerの一部です。 import UIKit class syutsudaiController: UITableViewController { //ボタン private var qButton: UIBarButtonItem! let cellId = "cellId" let headerId = "headerId" var items = ["Item 1", "Item 2", "Item 3"] override func viewDidLoad() { super.viewDidLoad() //ここです???? self.navigationItem.hidesBackButton = false tableView.backgroundColor = .white tableView.sectionHeaderHeight = 50 tableView.register(MyCell.self, forCellReuseIdentifier: "cellId") tableView.register(Header.self, forHeaderFooterViewReuseIdentifier: "headerId") // qButton = UIBarButtonItem(title: "あ", style: .plain, target: self, action: #selector(onClickButton)) self.navigationItem.leftBarButtonItem = qButton } //ボタン @objc func onClickButton(_ sender: UIButton){ let layout = UICollectionViewFlowLayout() let vc = MyPageController(collectionViewLayout: layout) layout.itemSize = CGSize(width: view.frame.width, height: view.frame.height) navigationController?.pushViewController(vc, animated: true) } ...
回答1件
あなたの回答
tips
プレビュー