从其他视图控制器加载 uitableview 时禁用/启用 uitableviewcell 的内容

Posted

技术标签:

【中文标题】从其他视图控制器加载 uitableview 时禁用/启用 uitableviewcell 的内容【英文标题】:Disable/Enable conents of uitableview cell when loading uitable view from other view controller 【发布时间】:2013-12-02 07:29:35 【问题描述】:

我有一个带导航栏的 tableview 控制器,它用于用户配置文件屏幕。 tableview 有 10 个包含标签、文本字段和 textview 的自定义单元格,导航栏按钮用于启用/禁用 tableviewcell 内容的编辑。用户可以使用该视图控制器上的按钮从应用程序中的任何控制器加载此用户配置文件屏幕。我想要做的是,当用户选择从任何地方打开此用户配置文件屏幕(tableview 控制器)时,它应该只显示查看模式;其具有文本字段和 Textviews 的单元格不应该是可编辑的。但是,当用户浏览应用程序的设置屏幕并转到用户个人资料屏幕时,可能会启用或禁用其单元格以进行编辑。有什么建议吗??

【问题讨论】:

【参考方案1】:

试试这个:

第 1 部分。准备您的 UITableViewController 课程

    .h 中: 添加... @property (nonatomic, assign) BOOL enableCellSelection; .

    .m

    -initWithStyle:做...

    - (id)initWithStyle:(UITableViewStyle)style
    
        self = [super initWithStyle:style];
        if (self) 
            enableCellSelection = YES;
        
        return self;
    
    

    -cellForRowAtIndexPath:做...

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    
    //your normal cell handling code
    
    [cell setUserInteractionEnabled:(enableCellSelection ? UITableViewCellSelectionStyleBlue : UITableViewCellSelectionStyleNone)];
    return cell;
    
    

第 2 部分。展示您的 UITableViewController 课程

从任何方法...

//alloc/init normally
MyTableViewController *tvcObj = [[MyTableViewController alloc] init];

//explicitly disable the cell selection ability 
tvcObj.enableCellSelection = NO;

//display the tableView
[self.navigationController pushViewController:tvcObj animated:YES];

基本上,我们创建一个在显示tableView之前设置的属性,当表格加载时,它将读取该属性并适当地设置整个单元格的交互能力。这是最好的我能想到

【讨论】:

以上是关于从其他视图控制器加载 uitableview 时禁用/启用 uitableviewcell 的内容的主要内容,如果未能解决你的问题,请参考以下文章

从 UITableView 加载 UIWebView 仅第一次有效

UITableView 从其他 Viewcontroller 添加行

从控制器重新加载 UITableView

将大数据从本地数据库加载到 UITableview 而无需 ui 冻结

UITableView 静态单元格作为子视图?

加载 UItableView 以响应 uitextfield