tableview索引混乱

时间:2016-03-25 11:12:43

标签: ios objective-c uitableview

我正在我的演示应用程序中创建简单的揭示菜单。现在我正在做的是我有一个名为MutableMenu

的MutableArray
NSArray menu = [@"menu1",@"Menu2","Menu3",@"Menu4"];
MutableMenu = [NSMutableArray alloc]initwithArray:menu];

我只是在默认的tableview单元格中显示这个可变数组。

cellForRowAtIndexPath方法中,我使用静态索引,如下面的代码段

    if(indexPath.row == 0){
        [self performSegueWithIdentifier:SEGUE_TO_MANAGE_TASK sender:nil];
    }
    if(indexPath.row == 1){
        [self performSegueWithIdentifier:SEGUE_TO_MANAGE_LEAVE sender:nil];
    }

到目前为止,一切都很好。现在我有一个数组,我想检查在tableview单元格中显示的权限。例如,第一个用户只有4个菜单的2个权限。该用户只能访问menu1和menu2。同样不同用户的权限不同。 这是我在viewDidLoad中维护此方案的代码。一切都很好

BOOL permisson = NO;
NSArray *Roles = [USERDEFAULT objectForKey:PREF_ROLE_ARRAY];
for (NSString *temp in Roles) {
    if ([temp isEqualToString:@"55"] || [temp isEqualToString:@"45"] || [temp isEqualToString:@"67"] ) {
        permisson = YES;
        if ([Mutablemenu containsObject:@"Team management"])
            NSLog(@"Already Have");
        else [Mutablemenu insertObject:@"Team management" atIndex:2];
      }
}
if (!permisson) {
    [Mutablemenu removeObject:@"Team management"];
    [Mutablemenu insertObject:@"" atIndex:2];
    [MutableImages removeObject:@"team.png"];
}
[_tableview reloadData];

一切正常但当用户只有3个权限时。我在didSelectRowatIndexPath中更改了索引。例如,第一个用户有4个权限,那么index是0,1,2,3但是当用户有3个权限时,index就是0,1,2。

但我的问题是如何处理didSelectRowatIndexPath中的这种情况。因为每次索引都会改变。

2 个答案:

答案 0 :(得分:0)

根据我的理解,您正在找到基于索引的菜单,但您不应该这样做,

而不是维护 menuid或menuname 来识别用户选择的菜单。通过这种方式,您不必担心索引。

didselectRow方法中,通过比较 menuid或menuname ,进行操作

答案 1 :(得分:0)

正如@RJV Kumar所说,您应该在indexPath中点击实际菜单而不是didSelectRowatIndexPath作为:

if([menuArray[indexPath.row] isEqualToString: @"Menu1"]){
    [self performSegueWithIdentifier:SEGUE_TO_HANDLE_MENU_1 sender:nil];
}
else if([menuArray[indexPath.row] isEqualToString: @"Menu2"]){
    [self performSegueWithIdentifier:SEGUE_TO_HANDLE_MENU_2 sender:nil];
}
.
.
so on...