2017-02-24 12 views
0

私のアプリにクイックアクションを使用しており、ナビゲーションバーがない(戻るボタンなし)以外は正しく動作しています。クイックアクションを使用するとナビゲーションバーが表示されない

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) { 
    let vc = storyboard.instantiateViewController(withIdentifier: "AddViewController") as! AddViewController 

    switch shortcutItem.type { 
    case "AddIncome": 
     vc.type = .income 
     app?.mainVC.dismiss(animated: false, completion: nil) 
     app?.mainVC.present(vc, animated: true, completion: nil) 
    case "AddExpense": 
     vc.type = .expense 
     app?.mainVC.dismiss(animated: false, completion: nil) 
     app?.mainVC.present(vc, animated: true, completion: nil) 
    default: 
     break; 
    } 
} 

mainVCは実際に私がAddViewController、私のナビゲーションバーが欠落しているVCを提示し、そこからビューコントローラである:ここに私のコードです。

問題の内容がわかりません。正しく動作させるためにいくつかの追加作業が必要ですか?

+0

ビューコントローラをモーダル表示するときに戻るボタンはありません。 – dan

+0

@dan:あなたが正しいです。私はそれらをモーダルに提示していました。ちょうどナビゲーションコントローラを取得し、プッシュをしなければならなかった。これを回答として提供してください、私はそれを受け入れます。 – Kobe

答えて

1

@Kobeビューコントローラを表示するときにナビゲーションバーを表示するには、ナビゲーションコントローラを追加する必要があります。次のコードを試してみてください。

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) { 
    let vc = storyboard.instantiateViewController(withIdentifier: "AddViewController") as! AddViewController 
    var nav = UINavigationController() 
    nav.viewControllers = [vc] 
    switch shortcutItem.type { 
    case "AddIncome": 
     vc.type = .income 
     app?.mainVC.dismiss(animated: false, completion: nil) 
     app?.mainVC.present(nav, animated: true, completion: nil) 
    case "AddExpense": 
     vc.type = .expense 
     app?.mainVC.dismiss(animated: false, completion: nil) 
     app?.mainVC.present(nav, animated: true, completion: nil) 
    default: 
     break; 
    } 
} 

ここで、AddViewControllerに戻るボタンを追加できます。

override func viewDidLoad() { 
    super.viewDidLoad() 
    let button = UIBarButtonItem(title: "Back", style:.plain, target: self, action: #selector(self.moveToPreviousScreen)) 
    self.navigationItem.backBarButtonItem = button 
} 

ご協力いただきありがとうございます。

0

そこには、あなたが考えることができます多くのポイントは以下のとおりです。

  1. あなたはナビゲーションコントローラを追加しました。 (私はあまりにも基本的だが、いくつか忘れている)
  2. あなたのビューコントローラをナビゲーションコントローラのルートとして設定しましたか?
  3. ナビゲーションバーをプログラムで設定することができます。
関連する問題