我正在我的演示应用程序中创建简单的显示菜单。现在我正在做的是我有一个名为 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 个权限,然后索引为 0,1,2,3,但是当用户有 3 个权限时,索引为 0,1,2。
但我的问题是如何在 didSelectRowatIndexPath
中处理这种情况。因为每次索引都会改变。
最佳答案
正如@RJV Kumar 所说,您应该在 didSelectRowatIndexPath
中检查实际点击的菜单,而不是 indexPath
,如下所示:
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...
关于ios - tableview 索引困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36218831/