ios - tableview 索引困惑

标签 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 个权限,然后索引为 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/

相关文章:

ios - 如何在 Objective-C 和 Swift 中实现 "didSelectButtonInCellAtIndexPath:"?

iphone - 以编程方式添加手势识别器

ios - 获取当前月份和年份并传递给 API iOS Swift?

ios - 在较旧的 iOS 模拟器上运行时,错误 "Failed to start launchd_sim: could not bind to session, launchd_sim may have crashed or quit responding"

ios - 在 Apple 程序集中重复字节?

objective-c - ARC 在 NSTableview 重新加载数据之前释放我的 NSmutablearray

iphone - 来自 url 的半图像显示

xcode - 在 XCode 中将单元格添加到 TableView (UITableView)

ios - 自定义 UITableViewCell 高度在移动时发生变化

ios - 用于动态高度中断的 UITableViewCell 约束