10

こんにちは、ツールバーの 1 つのタブ バー ボタンを使用しています。このボタンは、テーブル ビューで次のビューを表示します。コードは次のとおりです。

[self presentModalViewController:self.navigationController
                            animated:YES];

私の問題は、このタブバーボタンをクリックすると、ナビゲーションバーではなくテーブルビューで次のビューが表示されることです。このため、tableView で削除操作を実行できません。

問題を解決するには?

4

7 に答える 7

37

次のクラスで が見つからUINavigationBarない場合は、ナビゲーション コントローラーがないため、プッシュする前にUINavigationController次のビューに a を追加します。

このようにしてみてください:

NextViewController *nextViewController=[[NextViewController alloc]initWithNibName:@"NextViewController" bundle:nil];
UINavigationController *navBar=[[UINavigationController alloc]initWithRootViewController:nextViewController];
[self.navigationController presentModalViewController:navBar animated:YES];
[navBar release];
[nextViewController release];

編集オプションについては、このstackoverflowの質問を参照してください。

簡単にナビゲーションバーにボタンを追加できます

self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(editTable)] autorelease];

-(void)editTable{
[tableView setEditing: YES animated: YES];
}

ではごきげんよう。

于 2011-05-19T10:46:57.843 に答える
3

このコードは、classA VC のボタン クリック イベントで呼び出されます。

ClassBVC* bVc = [[ClassBVC alloc] initWithNibName:@"ClassBVC" bundle:nil];
     UINavigationController* tempNavCon = [[UINavigationController alloc]    initWithRootViewController:bVc];
    [self presentModalViewController:tempNavCon animated:YES];
    [tempNavCon release];
    [bVc release];
    bVc = nil

;

ビュー内のクラス BVC でロードした場合、UIbarbutton アイテムを作成します。

UIBarButtonItem* barButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked:)];
    [barButton setTitle:@"Back"];
    [self.navigationItem setLeftBarButtonItem:barButton];
    [barButton release];

そして、buttonClickedMethod では、モデル コントローラーを次のように単純に閉じます。

-(void)backButtonClicked:(id)sender
{
    [self dismissModalViewControllerAnimated:YES];
}
于 2012-01-05T14:24:50.723 に答える
1

これは、Modal を使用して新しいビュー コントローラーを導入しているためです。

モーダルに追加/提示されたビュー コントローラーは、ナビゲーション コントローラー スタックに追加されません。

于 2013-06-25T19:37:09.073 に答える
0

ナビゲーションコントローラーを使用している場合は、このように使用します

[self.navigationController pushViewController:nextController animated:YES];
于 2011-05-19T09:51:05.110 に答える
0

スイフト5

 import UIKit

class ListVC: UIViewController {


    // MARK: - Init
    override func viewDidLoad() {
           super.viewDidLoad()

        //Background of the first screen
        view.backgroundColor = .yellow

        //Calling the instance of the navigation controller
        let nav = self.navigationController?.navigationBar

        //Defining the black theme on the navigation controller
        nav?.barStyle = UIBarStyle.black

        //Defining the white characters to make contrast with the black theme on the navigation controller
        nav?.tintColor = UIColor.white

        //Defining the custom color of the title font from navigation controller
        nav?.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange]

        //Defining the title of the navigation controller
        nav?.topItem?.title = "List"

        navigationItem.rightBarButtonItem = UIBarButtonItem.init(image: #imageLiteral(resourceName: "AddBtn"), style: .plain, target: self, action: #selector(hello))



//        print(Realm.Configuration.defaultConfiguration.fileURL)

           let realm = try! Realm()

           print(Realm.Configuration.defaultConfiguration.fileURL)

       }


    // MARK: - Selector

    /// A selector function that is called when the 'add' button is pressed on the navigation controller
    @objc func hello() {

        //Instance of the second screen
        let addVC = AddVC()

        //Add the navigationController to the new viewController
        let navController = UINavigationController(rootViewController: addVC)

        //Presenting the second screen modally
        navigationController?.present(navController, animated: true, completion: nil)
    }


}
//Other class
import UIKit

class AddVC: UIViewController {


    override func viewDidLoad() {
        super.viewDidLoad()

        //Background of the view
        view.backgroundColor = .white

        //Calling the instance of the navigation controller
        let nav = self.navigationController?.navigationBar

        //Initialize the title for the ViewController
        nav?.topItem?.title = "Andrey"

        // Initialize the right bar button item
        navigationItem.rightBarButtonItem = setUpSaveButton()
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.setNavigationBarHidden(false, animated: true)
    }

    /// Function that returns the "Save" bar button item
    private func setUpSaveButton() -> UIBarButtonItem {
        let button = UIBarButtonItem(title: "Save", style: .plain, target: self, action: #selector(saveAction))
        button.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.systemBlue],
                                      for: .normal)

        return button
    }

    @objc func saveAction() {
        print("Saving..")
    }
}

于 2020-02-07T23:40:02.510 に答える