9

「LoginView」を呼び出す現在のビューがありますがUIViewController、私は入っていません。NSObjectクラスにいて、呼び出したいので、UIViewController「MapView」と呼ばれる別のビューを表示します。これどうやってするの?ここに画像の説明を入力してください

問題は上のスクリーンショットのようなものです。

4

6 に答える 6

2

このコードを試してください。お役に立ちますように……

ボタンクリックアクションでは、 UINavigationController と現在の ViewController を送信する必要があります。NSObject クラスがそのコントローラーを見つけられなかったためです。

ボタン アクションに次のコードを入力します。

[demo login_method_called:self.navigationController withCurrentViewController:self];

NSObject .h クラスに次のコードを追加します。

#import <Foundation/Foundation.h>
#import "Home_ViewController.h"

@interface Method_Action_class : NSObject

- (void)login_method_called:(UINavigationController*)navigation  withCurrentViewController:(UIViewController*) controller;
@end

NSObject .m クラスに次のコードを追加します。

#import "Method_Action_class.h"

@implementation Method_Action_class

-(void)login_method_called:(UINavigationController*)navigation  withCurrentViewController:(UIViewController*) controller
{
    Home_ViewController *home = [[Home_ViewController alloc] initWithNibName:@"Home_ViewController" bundle:nil];
    [navigation pushViewController:home animated:YES];
}
@end

コードをビルドします。

于 2015-02-19T09:03:32.623 に答える
2

モデル内からView Controllerをインスタンス化して表示するべきではありません。ビューはモデルによって駆動される必要があります。

この場合LoginView、あなたは出発点として言及しました。何らかの条件が満たされた場合 (おそらくログインの成功?)、それに応じて基礎となるモデルを更新し、MapView.

中からLoginView

MapView *mapView = [[MapView alloc] init];

アプリでナビゲーション コントローラーを使用する場合:

[self.navigationController pushViewController:mapView animated:YES];

さもないと:

[self presentViewController:mapView animated:YES completion:<nil or block>];
于 2012-10-19T16:32:50.703 に答える