Objective c 内部MFSideMenuController视图将显示方法不工作
我想检查nsuserdefault值是否可用,如果值可用,则应显示Logout,如果值为nill,则应在侧菜单中显示Login。我正在VIEWWILLEASER方法中执行此操作,但它不起作用,请有人对此进行澄清Objective c 内部MFSideMenuController视图将显示方法不工作,objective-c,iphone,ios7,Objective C,Iphone,Ios7,我想检查nsuserdefault值是否可用,如果值可用,则应显示Logout,如果值为nill,则应在侧菜单中显示Login。我正在VIEWWILLEASER方法中执行此操作,但它不起作用,请有人对此进行澄清 -(void)viewWillAppear:(BOOL)animated { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *id1 = [defaults objec
-(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];
}
}
我已经这样做了,现在它正在工作
- (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];
}
在otherpage(您要调用的任何页面)示例中调用此loginlogout方法
Loginviewcontroller.M
- (IBAction)Logout:(id)sender
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginlogout:) name:@"login" object:nil];
}
最后是德洛克
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"login" object:nil];
}
假设MFSidemenu是一个用于显示菜单的抽屉式功能的pod。 MFSidemenu具有以下显示侧菜单的方法
[self.menuContainerViewController setMenuState:MFSideMenuStateLeftMenuOpen completion:^{}];
您可以在调用此方法之前或在完成块(以适合您的为准)中添加对NSUserDefaults的检查。
视图将不会在每次侧菜单打开时调用
它还有一个通知,您可以观察到在侧菜单打开时触发(即菜单将打开、菜单确实打开等)
仅当您显示MFSideMenuController时,而不是每次打开侧视图时,才会调用侧菜单的视图。您可以设置断点并进行调试以查找问题,您是得到空字符串id1还是根本不调用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.
}