Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 内部MFSideMenuController视图将显示方法不工作_Objective C_Iphone_Ios7 - Fatal编程技术网

Objective c 内部MFSideMenuController视图将显示方法不工作

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

我想检查nsuserdefault值是否可用,如果值可用,则应显示Logout,如果值为nill,则应在侧菜单中显示Login。我正在VIEWWILLEASER方法中执行此操作,但它不起作用,请有人对此进行澄清

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

}