2016-07-08 8 views
2

値が使用可能かどうかを確認したい場合は、値が有効な場合はログアウトを表示し、値がnillの場合はサイドメニューにログインを表示しますviewwillappearメソッドしかし、それは動作していない、いくつかの1つこれを明確にしてください。内部MFSideMenuController viewwillappearメソッドが動作していない

-(void)viewWillAppear:(BOOL)animated 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *id1 = [defaults objectForKey:@"ID"]; 


    if (id1.length>0) 
    { 
     recipes = [NSArray arrayWithObjects:@"Account Details", **@"Logout",** @"Change Password", @"Contacts", @"Ham and Cheese Panini", nil]; 
    } 

    else 
    { 
     recipes = [NSArray arrayWithObjects:@"Account Details", @"**Login**", @"Change Password", @"Contacts", @"Ham and Cheese Panini", nil]; 
    } 


} 
+0

あなたが提示した場合にのみサイドメニューのviewWillAppearが呼び出されますMFSideMenuControllerで、サイドビューを開くたびに表示されるわけではありません。ブレークポイントとデバッグを入れて問題を見つけることができます。空の文字列id1が取得されているか、viewWillAppearがまったく呼び出されていませんか? このような多くの情報で実際の問題が何であるか把握するのは難しい –

答えて

1

私はこれを今行っています。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
{ 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginlogout:) name:@"login" object:nil]; 

} 

- (void)loginlogout:(NSNotification *) notification 
{ 


    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *id1 = [defaults objectForKey:@"ID"]; 


    if (id1.length>0) 
    { 
     recipes = [NSArray arrayWithObjects:@"Account Details", @"Logout", @"Change Password", @"Contacts", @"Ham and Cheese Panini", nil]; 
    } 

    else 
    { 
     recipes = [NSArray arrayWithObjects:@"Account Details", @"Login", @"Change Password", @"Contacts", @"Ham and Cheese Panini", nil]; 
    } 
    [tableview1 reloadData]; 
} 

Loginviewcontroller.M最後に

- (IBAction)Logout:(id)sender 

{ 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginlogout:) name:@"login" object:nil]; 

} 

Delloc

- (void) dealloc 
{ 

    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"login" object:nil]; 
} 
2

MFSidemenuの使用目的ポッドがあると仮定すると、たとえば(呼び出したい任意のページ)otherpageでこのloginlogoutメソッドを呼び出しますメニューを表示するための機能のような引き出し。 MFSidemenuには、サイドメニューを表示する以下のメソッドがあります。

[self.menuContainerViewController setMenuState:MFSideMenuStateLeftMenuOpen completion:^{}]; 

あなたは、このメソッドを呼び出す前に、またはあなたに合った方完了ブロック、のいずれかでNSUserDefaultsのための小切手を追加することができます。 サイドメニューが開くたびにViewWillAppearが呼び出されることはありません。

それはまた、あなたがSideMenuが開いたときにトリガするために観察することができます通知がある(つまり、メニューが開きますが、メニューにはなど、開いていた)

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(menuStateEventOccurred:) 
name:MFSideMenuStateNotificationEvent 
object:nil]; 

- (void)menuStateEventOccurred:(NSNotification *)notification { 
    MFSideMenuStateEvent event = [[[notification userInfo] objectForKey:@"eventType"] intValue]; 
    MFSideMenuContainerViewController *containerViewController = notification.object; 
// Check whether menu opens here and then add your code. 

} 
関連する問題