首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RESideMenu-两个数组

RESideMenu-两个数组
EN

Stack Overflow用户
提问于 2013-11-03 02:46:25
回答 1查看 789关注 0票数 0

在我的应用程序中,我用这个作为一个辅助菜单:https://github.com/romaonthego/RESideMenu

但是,我在让它处理两个数组时遇到了问题。我希望我的RESideMenu在用户登录时显示特定的菜单项数组,如果没有用户,则显示不同的菜单项数组。

假设我打开了应用程序,而我没有登录,如果我打开菜单,正确的菜单将显示出来。然而,如果我然后登录,菜单不会改变,如果我再次打开它,它保持不变,如果我没有登录。现在,如果我打开应用程序,而我没有登录,然后我登录,并将应用程序从多任务处理,再次打开它,现在“登录”菜单显示!

下面是我的菜单视图的.h文件中的代码:

代码语言:javascript
复制
//
//  JSAMenuViewController.h
//  JSApp
//
//  Created by Jacob Klapper on 10/31/13.
//
//

#import <UIKit/UIKit.h>
#import "RESideMenu.h"

@interface JSAMenuViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, RESideMenuDelegate>

@property (strong, readwrite, nonatomic) UITableView *tableView;

@property NSArray *currentArray;

@property NSArray *inTitles;

@property NSArray *outTitles;

@end

.m:

代码语言:javascript
复制
//
//  JSAMenuViewController.m
//  JSApp
//
//  Created by Jacob Klapper on 10/31/13.
//
//

#import "JSAMenuViewController.h"
#import "UIViewController+RESideMenu.h"
#import <Parse/Parse.h>

@interface JSAMenuViewController ()

@end

@implementation JSAMenuViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    //height 54 * 5
    //y = (self.view.frame.size.height - 54 * 5) / 2.0f
    self.tableView = ({
        UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, (self.view.frame.size.height - 490) / 2.0f, self.view.frame.size.width, 490) style:UITableViewStylePlain];
        tableView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth;
        tableView.delegate = self;
        tableView.dataSource = self;
        tableView.opaque = NO;
        tableView.backgroundColor = [UIColor clearColor];

        tableView.backgroundView = nil;
        tableView.backgroundColor = [UIColor clearColor];
        tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        tableView.bounces = NO;
        tableView.scrollsToTop = NO;
        tableView;
    });
    [self.view addSubview:self.tableView];

    self.inTitles = [NSArray arrayWithObjects:@"Login", @"Register", @"About Us", @"Who's Who", @"Request a Position", @"My Debates", @"Submit an Idea", @"Debates", @"Logout", nil];

    self.outTitles = [NSArray arrayWithObjects:@"Login", @"Register", @"About Us", @"Who's Who", nil];

    if([PFUser currentUser])
    {
        self.currentArray = self.inTitles;
        [self.tableView reloadData];
    }

    else
    {
        self.currentArray = self.outTitles;
        [self.tableView reloadData];
    }

    [self.tableView reloadData];
    //self.sideMenu.openStatusBarStyle = UIStatusBarStyleLightContent;
    //self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

    //[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}


#pragma mark -
#pragma mark UITableView Delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    UINavigationController *navigationController = (UINavigationController *)self.sideMenuViewController.contentViewController;

    switch (indexPath.row) {
        case 0:

            if([PFUser currentUser])
            {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Already Logged In" message:@"Proceeding to the login screen will log you out of your current session." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];

                alert.tag = 2;
                [alert show];
            }
            /*
            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"login"]];
            [self.sideMenuViewController hideMenuViewController];
             */
            break;
        case 1:
            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"register"]];
            [self.sideMenuViewController hideMenuViewController];
            break;
        case 2:
            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"about"]];
            [self.sideMenuViewController hideMenuViewController];
            break;
        case 3:
            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"who"]];
            [self.sideMenuViewController hideMenuViewController];
            break;
        case 4:
            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"request"]];
            [self.sideMenuViewController hideMenuViewController];
            break;
        case 5:
            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"my"]];
            [self.sideMenuViewController hideMenuViewController];
            break;
        case 6:
            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"submit"]];
            [self.sideMenuViewController hideMenuViewController];
            break;
        case 7:
            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"debates"]];
            [self.sideMenuViewController hideMenuViewController];
            break;
        case 8:
            [PFUser logOut];
            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"login"]];
            [self.sideMenuViewController hideMenuViewController];
            break;
        default:
            break;
    }
}

#pragma mark -
#pragma mark UITableView Datasource

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 54;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionIndex
{
    return [self.currentArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        cell.backgroundColor = [UIColor clearColor];
        cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:21];
        cell.textLabel.textColor = [UIColor whiteColor];
        cell.textLabel.highlightedTextColor = [UIColor lightGrayColor];
        cell.selectedBackgroundView = [[UIView alloc] init];
    }

    /*
    NSArray *titles = @[@"Login", @"Register", @"About Us", @"Who's Who", @"Request a Position", @"My Debates", @"Submit an Idea", @"Debates", @"Logout"];
    NSArray *images = @[@"group-50white@2x.png", @"group-50white@2x.png", @"group-50white@2x.png", @"group-50white@2x.png", @"group-50white@2x.png", @"group-50white@2x.png", @"group-50white@2x.png", @"group-50white@2x.png", @"group-50white@2x.png"];
     */
    cell.textLabel.text = self.currentArray[indexPath.row];
    //cell.imageView.image = [UIImage imageNamed:images[indexPath.row]];

    return cell;
}

#pragma mark -
#pragma mark RESideMenu Delegate

- (void)sideMenu:(RESideMenu *)sideMenu willShowMenuViewController:(UIViewController *)menuViewController
{
    NSLog(@"willShowMenuViewController");
}

- (void)sideMenu:(RESideMenu *)sideMenu didShowMenuViewController:(UIViewController *)menuViewController
{
    NSLog(@"didShowMenuViewController");
}

- (void)sideMenu:(RESideMenu *)sideMenu willHideMenuViewController:(UIViewController *)menuViewController
{
    NSLog(@"willHideMenuViewController");
}

- (void)sideMenu:(RESideMenu *)sideMenu didHideMenuViewController:(UIViewController *)menuViewController
{
    NSLog(@"didHideMenuViewController");
}

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {


    if(alertView.tag == 2)
    {
        if(buttonIndex == 1)
        {
            [PFUser logOut];
            [self.tableView reloadData];
            UINavigationController *navigationController = (UINavigationController *)self.sideMenuViewController.contentViewController;

            navigationController.viewControllers = @[[self.storyboard instantiateViewControllerWithIdentifier:@"login"]];
            [self.sideMenuViewController hideMenuViewController];

        }
    }


}

@end

为了在我的tableview菜单中实现/使用两个数组,我应该做一些不同的事情吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-03 14:11:05

我相信我刚刚解决了我自己的问题哈哈。我正在尝试将数组更改的代码放在不同的方法中,这一种方法起了作用:

代码语言:javascript
复制
- (void)sideMenu:(RESideMenu *)sideMenu willShowMenuViewController:(UIViewController *)menuViewController
{
    NSLog(@"willShowMenuViewController");

    self.inTitles = [NSArray arrayWithObjects:@"Login", @"Register", @"About Us", @"Who's Who", @"Request a Position", @"My Debates", @"Submit an Idea", @"Debates", @"Logout", nil];

    self.outTitles = [NSArray arrayWithObjects:@"Login", @"Register", @"About Us", @"Who's Who", nil];

    if([PFUser currentUser])
    {
        self.currentArray = self.inTitles;
        [self.tableView reloadData];
    }

    else
    {
        self.currentArray = self.outTitles;
        [self.tableView reloadData];
    }

    [self.tableView reloadData];
}

每次菜单出现时都会调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19749339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档