如何使用 plist 中的数据阻止或禁用 Tableview 中的自定义单元格?

Posted

技术标签:

【中文标题】如何使用 plist 中的数据阻止或禁用 Tableview 中的自定义单元格?【英文标题】:How Block or disable someones Customs Cells From Tableview with data from plist? 【发布时间】:2013-09-18 15:33:13 【问题描述】:

我有 2 个 plist 文件:

还有:

我的故事板是:

问题是当在我的“Inicio”视图控制器中从 plist 加载数据时,我希望在具有 ENABLE=NO 属性时禁用单元格并启用具有 ENABLE = YES 的单元格,当我按下或单击单元格时,然后转到此视图控制器中的下一个视图控制器“PERSONAS”,加载第二个 Plist,在同样的情况下,我只想使用 plist 中启用的已启用单元格进入“DETALLE”视图控制器。

对于我使用的每个 viewdidload:

 NSString *myListPath = [[NSBundle mainBundle] pathForResource:@"MainMenuList"      ofType:@"plist"];
mainMenu = [[NSArray alloc]initWithContentsOfFile:myListPath];
NSLog(@"%@",mainMenu);

 NSString *myListPath = [[NSBundle mainBundle] pathForResource:@"PersonasList" ofType:@"plist"];
Personas = [[NSArray alloc]initWithContentsOfFile:myListPath];
NSLog(@"%@",Personas);

为了在我使用的自定义单元格中显示表格视图:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

static NSString *simpleTableIdentifier = @"CustomCell";

NSLog(@"CARGANDO CELDAS");
MainMenuCell *cell = (MainMenuCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCelliPhone" owner:self options:nil];
    cell = [nib objectAtIndex:0];

//CustomCell*cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

cell.Enabled.text = [[mainMenu objectAtIndex:indexPath.row]objectForKey:@"ENABLE"];
cell.TitleLabel.text = [[mainMenu objectAtIndex:indexPath.row]objectForKey:@"NAME"];
cell.ImageImageView.image = [UIImage imageNamed:[[mainMenu objectAtIndex:indexPath.row]objectForKey:@"IMAGE"]];

    if ([cell.Enabled.text isEqualToString:@"NO"])
    
        NSLog(@"%@",cell.Enabled.text);
        cell.userInteractionEnabled = NO;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.selected = NO;
        cell.accessoryType = UITableViewCellAccessoryNone;
    

return cell;

在 Persona 视图控制器中,我使用相同的代码但无法正常工作,所有自定义单元都已启用,我该如何解决?还是我有什么问题?或者我确实忘记了一些东西,请帮助大家!!

在模拟器中以这种方式运行启用:

但我不想让带有 ENABLE NO 的单元格运行!!:

请帮助大家,我正在使用 XCODE 5 DP6,对于 ios7,解决这个问题的最佳方法是什么!!! 谢谢!!!!

【问题讨论】:

【参考方案1】:

出于许多目的,终于解决了这个问题!在每个视图控制器中,解决此问题的代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

static NSString *simpleTableIdentifier = @"MainMenuCell";

NSLog(@"CARGANDO CELDAS");
MainMenuCell *cell = (MainMenuCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MainMenuCelliPhone" owner:self options:nil];
    cell = [nib objectAtIndex:0];

//MainMenuCell*cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

cell.Enabled.text = [[mainMenu objectAtIndex:indexPath.row]objectForKey:@"Enabled"];
cell.TitleLabel.text = [[mainMenu objectAtIndex:indexPath.row]objectForKey:@"Title"];
cell.ImageImageView.image = [UIImage imageNamed:[[mainMenu objectAtIndex:indexPath.row]objectForKey:@"Image"]];
//cell.ImageImageView.image = [[mainMenu objectAtIndex:indexPath.row]objectForKey:@"Image"];

    if ([[[mainMenu objectAtIndex:indexPath.row]objectForKey:@"Enabled"] isEqualToString:@"NO"])
    
        NSLog(@"%@",cell.Enabled.text);
        cell.userInteractionEnabled = NO;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.selected = NO;
        cell.accessoryType = UITableViewCellAccessoryNone;

        cell.ImageImageView.image = [UIImage imageNamed:@"NO.png"];
    
    else
    
    cell.ImageImageView.image = [UIImage imageNamed:@"YES.png"];
    

return cell;

    //------------------------------------------//
    //               THANKS anyway              //
    //          GRETTINGS FROM BOLIVIA          //
    //                ROCK ON!!!! n_n'          //
    //------------------------------------------//
 

【讨论】:

以上是关于如何使用 plist 中的数据阻止或禁用 Tableview 中的自定义单元格?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决Access操作或事件已被禁用模式阻止

UIUserInterfaceStyle 键在 Xcode 12 的 Info.plist 中不可用,如何从 Info.plist 禁用 Xcode 12 中的暗模式?

动作或事件已被禁用模式阻止

如何使用 <object> 禁用 JSP 中显示的 PDF 中的功能键,从而(部分)阻止保存?

如何禁用响应 nginx 或 apache 或 caddy 中的 http1 请求?

阻止 iphone 休眠但允许屏幕锁定