1

ECSlidingViewController を実装しようとしています & ストーリーボードでセグエを使用しています。MainViewControllerの viewDidLoadが 2 回呼び出され、

self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];

常に null に設定されています。詳しくは。

  1. ログイン画面 ( InitViewController ) ------セグエ経由---------> MainViewController.

私の MainViewController には、次のコードがあります。

-(void)addMenuViewControllerWithGesture{
self.view.layer.shadowOpacity = 0.075f;
self.view.layer.shadowRadius = 10.0f; 
self.view.layer.shadowColor = [UIColor blackColor].CGColor;
if (![self.slidingViewController.underLeftViewController isKindOfClass:[rsMenuViewController class]]) {

self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
}
}

私の InitViewController (ログイン)

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

MainViewController *controller = segue.destinationViewController;

// setting some values before going to the next view.

controller.id = 0;

controller.name = @"harish";

self.topViewController = controller;

}

これにより、MainViewController の viewDidLoadが 2 回呼び出され、以下の値が常に null に設定されます。

self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];

それが明確であることを願っています。私はここで立ち往生していて、解決策を探しています。

ありがとう

4

1 に答える 1

1

わかりました。長く困難な経験を経て、私はそれを理解しました。私はここで同様の質問をしました: iOS 追加メニューは、最初のビューでないときにクラッシュし、最終的に答えました。私は最近あなたの質問に出くわしました。

したがって、多数のファイルがあるとしましょう (それぞれに .m と .h があります):

InitViewController

MenuViewController

MainViewController

スピーカービュー

目的は、スライド メニューにないボタンを使用して MainViewController から SpeakersView に切り替えることでしたが、フィリップ ミルズ氏が指摘したように、直接切り替えるとスライド メニューが null になりました。

代わりに、これを InitViewController.h の @Interface のすぐ下に配置します。

@property (nonatomic, retain) NSString *location;

次に、これは InitViewController.m の @implementation の下にあります:

@synthesize location;

私はもともと InitViewController.m の ViewDidLoad の下にこれを持っていました:

self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"];

私はこれを次のように変更しました:

if([location length] == 0){location = @"Main";}
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:location];

そうすれば、変数が空の場合、デフォルトで @"Main" になります。

次に、ボタンを押した後にコードを実行する MainView.m では、次のようになります。

InitViewController *ini;
ini = [self.storyboard instantiateViewControllerWithIdentifier:@"Init"];
ini.location = @"Speakers";

そしてほら、ビューは問題なくスピーカーに切り替わります. より正確には、スピーカーまたは場所を設定したものに自動的に切り替わる InitViewController に切り替わります。

うまくいけば、これはあなたを助けます。

ご不明な点がございましたら、お知らせください。

于 2013-08-08T16:49:00.517 に答える