我正在我的演示应用程序中创建简单的揭示菜单。现在我正在做的是我有一个名为MutableMenu
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
中的这种情况。因为每次索引都会改变。
答案 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...