2016-07-08 2 views
2

사용할 수있는 nsuserdefault 값을 확인하고 싶습니다. 값을 사용할 수 있으면 값이 nill 인 경우 로그 아웃이 표시되어야합니다. 사이드 메뉴에 로그인해야합니다. viewwillappear 메서드에서이 작업을 수행하고 있습니다. 하지만 작동하지 않습니다. 제발 좀 분명히 해주세요.내부 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가 호출 될 것이다 (즉, 메뉴 등 메뉴가 열려 않았다 열립니다) 당신이 SideMenu가 열릴 때 트리거 관찰 할 수있는 알림이있는 경우에만 당신을 존재 측면 뷰를 열 때마다가 아니라 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가 호출되지 않습니다.

는 또한

[[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. 

} 
관련 문제