viewWillAppear 期间静态 UITableViewCell 更改未反映在显示中

2023-12-23

我正在使用一些静态UITableViewCell在情节提要中配置为显示一些设置信息。

如果关闭其他设置之一,则应禁用其他一些单元格。

为了使细胞进入适当的状态,在viewWillAppear我从 NSUserDefaults 读取设置,然后相应地更改单元格。

- (void) viewWillAppear:(BOOL)animated
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"OtherCellEnabled"]) {
            [self otherCell].alpha = 1.0;
            [self otherCell].userInteractionEnabled = YES;
        }
        else {
            NSLog(@"Changing alpha to 0.3");
            [self otherCell].alpha = 0.3;
            [self otherCell].userInteractionEnabled = NO;
        }

问题是,当我实际运行该程序时,即使它在日志中显示 alpha 已更改,但 alpha 实际上并未更改。这userInteractionEnabled似乎确实如此,但 alpha 仍为 1.0。

这不是单元重用的问题,或者单元没有及时实例化的问题,因为其他设置可以很好地更改。

将其从 cell.alpha 更改为 cell.contentView.alpha 是可行的,但这是一个不同的设置。

似乎所有设置都“粘住”,除了alpha设置,不知何故被覆盖。


我正在回答我自己的问题,因为我能够解决它。

首先,我尝试将 alpha 更改放入cellForRowAtIndexPath,但这也不起作用。经过大量修改后,我得出的结论是UITableViewCell的 alpha 设置在某种程度上很特殊,因为它不断被覆盖或设置为 1.0。

我发现了两个修复:

First,而不是进行更改cellForRowAtIndexPath,在UITableViewDelegate method willDisplayCell。无论出于何种原因,在此方法中更改单元格的 alpha 值实际上都会持续下去。当然,如果你这样做,你必须重新安排你的逻辑,以便更改是在逐个单元格的基础上完成的,即:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell  
                                         forRowAtIndexPath:(NSIndexPath *)indexPath {
if (cell == [self otherCell]) {
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"OtherCellEnabled"]) {
        cell.alpha = 1.0;
        cell.userInteractionEnabled = YES;
    }
    else {
        NSLog(@"Changing alpha to 0.3");
        cell.alpha = 0.3;
        cell.userInteractionEnabled = NO;
    }
}
}

正如我所说,我不确定为什么这会起作用willDisplayCell但不在cellForRowAtIndexPath。其他人似乎也不确定:

-[UITableViewDelegate willDisplayCell:forRowAtIndexPath:] 是什么? https://stackoverflow.com/questions/1890265/what-is-uitableviewdelegate-willdisplaycellforrowatindexpath-for

UITableView 背景的 alpha 颜色导致 UITableViewCell 出现问题 https://stackoverflow.com/questions/3916348/uitableview-background-with-alpha-color-causing-problem-with-uitableviewcell

另一种解决方案就是不使用有问题的 alpha,而是使用另一个可以达到相同效果的设置。就我而言,那就是contentView.alphabackgroundColor。无论出于何种原因,这些设置都会保留,您甚至可以将它们设置为viewWillAppear它会按预期工作:

- (void) viewWillAppear:(BOOL)animated {
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"OtherCellEnabled"]) {
            [self otherCell].backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
            [self otherCell].contentView.alpha = 1.0;
            [self otherCell].userInteractionEnabled = YES;
        }
        else {
            NSLog(@"Changing alpha to 0.3");
            [self otherCell].backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.3];
            [self otherCell].contentView.alpha = 0.3;
            [self otherCell].userInteractionEnabled = NO;
        }
}

第二种方法的缺点是,现在您正在覆盖故事板的单元格颜色设置,但如果您关心的话,您可以通过向故事板询问颜色来解决这个问题。

我不知道为什么cell.alpha被区别对待。也许与静态单元的实现方式有关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

viewWillAppear 期间静态 UITableViewCell 更改未反映在显示中 的相关文章

  • 如何在IOS中的UIStackView中设置权重

    UIStackView与安卓类似LinearLayout但我不知道如何设置子视图的权重 假设我有一个垂直的UIStackView and 3 UIImageView就在里面 我想连续设置权重3 6 1UIImageViews 我怎么做 UI
  • 在 Objective-C 中比较 2 个字符串

    我写了以下代码 if depSelectedIndice gt 1 comSelectedIndice gt 1 NSLog depart elemet d depSelectedIndice NSLog depart elemet d c
  • 将永久字符添加到 UITextField

    有没有办法将字母永久添加到 UITextField 中 用户无法删除它 我想添加一个字符 用户无法删除它 但他们仍然可以在之后添加字母 Cheers 附注这是适用于 iOS 的 A UITextField有一个名为 应该更改范围内的字符 的
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 如何替换已弃用的方法dispatch_get_current_queue()? [复制]

    这个问题在这里已经有答案了 我正在 iOS 5 中使用 xmppframework 开发一个聊天应用程序 它工作得很好 但我将 Xcode 更新到 4 5 1 将 iOS 5 更新到 iOS 6 将 Mac OS 更新到 10 7 5 但由
  • 使用 iPhone 中的地图视图读取当前位置名称

    我读取了当前位置的纬度和经度值 然后成功将该位置固定在 iPhone 中 现在我想使用这个纬度和经度值读取该地名 我使用以下代码来读取查找当前位置 void mapView MKMapView mapView1 didUpdateUserL
  • 带操作按钮的颤动本地通知

    我在我的 flutter 项目中尝试了 flutter 本地通知插件 它在简单通知上工作正常 但我需要带有操作按钮的通知功能 请帮助我或建议我实现此功能 不幸的是 flutter local notifications 插件尚不支持操作按钮
  • 当地图视图只是屏幕的一部分时,如何在 iOS 模拟器中进行捏合?

    我在 iPad 上有一个视图 我正在添加MKMapView也就是说 全屏高度的一半 然而 当我尝试在 iOS 模拟器上进行捏合时 它不起作用 因为 to nubs 填充了模拟器上的整个 iPad 视图 And so with the map
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 在 Xcode 5 中重命名 iOS 项目[重复]

    这个问题在这里已经有答案了 我需要重命名一个 iOS 项目 有没有办法在不开始一个全新项目的情况下做到这一点 我发现的所有其他信息都与 Xcode 4 或旧版本相关 这些方法似乎使项目崩溃 我在尝试任何名称更改之前创建了一个快照 在 Xco
  • 在 iOS 上将 NSString 转换为 NSDate 的正确方法?

    我一直在使用此方法将常规 NSString 对象转换为 NSDate 但尝试向 Apple 提交更新 但遭到拒绝 在 iOS 中还有什么其他方法可以做到这一点 NSString date str 2011 08 12T12 20 00Z N
  • 覆盖层不与 UITableView 一起滚动 - iOS

    我有一个 UITableView 类 它使用以下方法在转到下一个屏幕时调用加载覆盖 问题是这个加载屏幕不随列表滚动 所以如果你滚动一点并单击某些东西 加载屏幕不会显示 因为它位于顶部 如何让加载屏幕始终保持在 UITableView 的顶部
  • 在 XCode 中链接静态 ObjC 库的过程

    我正在尝试链接到静态库 但不断收到链接器错误 我发现了一些发布示例的网站 但我无法看到我做错了什么 首先 我创建一个链接到我的库的项目 添加 gt 现有文件找到我的 xcodeproj 文件选择 将项目复制到目标组文件夹 选择我的宿主项目作
  • 将 SSLSetEnabledCiphers 与 AFNetworking 结合使用来禁用弱密码

    我正在尝试禁用一些密码 弱 例如单个 DES 单个 DES 40 位等 我尝试过使用这段代码在 Cocoa 中使用 CFSocket CFStream 时如何设置 SSL 密码 https stackoverflow com questio
  • 如何在 React Native 中构造 POST 请求主体,而不是使用字符串化的 json,而是使用 json?

    我正在努力用 React Native 替换一些本机代码 预期的 POST 请求 在AFNetworking in Charles应该是这样的 代码片段 NSError err NSData paramData NSJSONSerializ
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • 如何让按钮闪烁?

    我试图在扫描正确时将按钮的颜色 只是闪烁 闪烁 更改为绿色 在出现问题时将按钮的颜色更改为红色 我可以用这样的视图来做到这一点 func flashBG UIView animateWithDuration 0 7 animations s
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr

随机推荐

  • jq json解析器哈希字段值

    我有一个 JSON 文件 如下所示 macAddress ac 5f 3e 87 d7 1a ip 1 2 3 4 macAddress ac 5f 3e 87 d7 2a ip 1 2 3 4 macAddress ac 5f 3e 87
  • Android webView保存状态

    我有一个带有 3 个选项卡的选项卡主机 在每个选项卡中都有一个网络视图 当我单击一个选项卡时 即使我以前去过那里 网络视图也需要 重新加载 但它尚未保存 有什么办法可以保存webview吗 这可以通过在 Activity 中覆盖 onSav
  • 如何将 Outlook-Mail 拖放到 richTextBox 中

    我的 WinForms 应用程序出现问题 我想将 Outlook 邮件拖放到 RichTextBox 中 我发现了很多关于拖放功能的文章 但它们都将邮件文本插入到 rTB 中 请参阅 Link https stackoverflow com
  • 在 Flutter 中只让一个 widget 浮动在键盘上方

    我想在键盘上方可见时显示 关闭键盘 按钮 我知道 resizeToAvoidBottomInset 会影响键盘与应用程序其余部分的交互方式 但它并不能完全满足我的要求 我有一个背景图像和其他小部件 在下面的示例中未显示 当显示键盘时 它们不
  • Chrome 开发者工具用户代理覆盖在模拟其他浏览器方面的效果如何?

    Chrome 开发人员工具具有将用户代理更改为欺骗服务器的功能 使开发人员能够测试其他设备和浏览器的应用程序 而无需在桌面终端上舒适地使用 Chrome 浏览器 我认为 Chrome 会模拟这些其他浏览器 而不是虚拟地模拟它们 Chrome
  • 如何重用 HierarchicalDataTemplate?

    我有两个相同的 HierarchicalDataTemplates 唯一的区别是模板的数据类型
  • 在delphi中更改字段值的DBGRID行颜色

    如何更改delphi中字段上具有相同值的dbgrid行的颜色 例如具有相同老师的所有行 注意 这些行被分组 并且在 dbgrid 中彼此相邻 提前致谢 您可以使用 DBGrids onDrawColumnCell 事件轻松实现此操作 pro
  • MSVC 是否有像 gcc 的 -M 那样的依赖生成标志

    MSVC 是否有像 gcc 那样的依赖生成标志 M flag 我用过的每个 C 编译器都有这种标志 如何创建依赖项 自动使用 MSVC cl 编译器 我只对最新的编译器版本感兴趣 即 MSVC9 或更高版本 但如果它与 MSVC8 一起工作
  • 在 HTML 页面中包含数据的最佳方式是什么?

    在 HTML 页面中包含数据的最佳方式是什么 该数据不是人类可读的 并且在页面加载后将由脚本处理 我能想到的选项是 在隐藏 空上使用类和标题属性 div or span 页面内的元素 JSON 中的 span div
  • std::regex -- 是否有一些需要链接的库?

    我收到以下代码的链接器错误 include
  • 如何在 Ruby 中输出尾随零? [复制]

    这个问题在这里已经有答案了 请考虑以下代码 class Book def initialize price price price end def book price puts Price price end end book1 Book
  • 点击隐藏选项卡时谷歌地图部分加载

    我使用 2 个选项卡 第一个用于显示列表 另一个用于显示地图 第一次加载页面时 默认显示 1 个选项卡 单击第二个选项卡时显示地图 但是当我单击列表选项卡并再次单击地图选项卡时 地图部分加载 这是我的 JAVASCRIPT 代码 docum
  • Visual Studio 参考和平台之间的冲突

    自从我将 C ASP Net 项目的目标框架升级到 4 6 1 后 我在构建过程中收到了很多冲突警告 50 多条消息 例如 考虑将程序集 System Runtime InteropServices RuntimeInformation C
  • 将 WHERE IN 子句添加到 JPA 规范

    我正在尝试实现受 IN 子句限制的搜索功能 我想实现具有过滤器限制的搜索实现 GetMapping find public Page
  • pandas dataframe滚动窗口与groupby

    我可以添加一个新列c这是最后两个值的总和b如下所示 df c df b rolling window 2 sum shift df a b c 0 1 3 NaN 1 1 0 NaN 2 0 6 3 0 3 1 0 6 0 4 0 0 6
  • 计算每个类别列的出现次数

    我正在尝试计算每个 SNP 名称的 iets 列中 Opp 的出现次数 最终我想将 Opp 的出现次数除以 df MM library data table df lt structure list SNP structure c 1L 1
  • 在 R markdown 中混合文本和引用

    是否可以在 R markdown 文档中混合常规文本和引用 使它们看起来如下 作者 2018 方法 目前 我已经尝试过 Author2018 Methods 这使 Author 2018 Methods 和 Author2018 Metho
  • ZF + 原则 2:重型模型类还是轻量级模型 + 服务层?

    我正在整合Zend框架 and 学说2 我正在发现服务层 现在我明白 我错了吗 我有两种可能的架构 A model 其中类包含域逻辑 即属性 getter setter 复杂方法 A 轻量化模型 其中类包含属性 getters setter
  • 如何将 Lua 与 .Net 集成

    要求是用户应该能够在文本框中添加 Lua 脚本 然后我需要检查用户是否添加了正确的 Lua 脚本 如果脚本正确 那么我需要运行该脚本 有人可以建议我一些代码吗 我尝试了以下操作 using Lua state new Lua state D
  • viewWillAppear 期间静态 UITableViewCell 更改未反映在显示中

    我正在使用一些静态UITableViewCell在情节提要中配置为显示一些设置信息 如果关闭其他设置之一 则应禁用其他一些单元格 为了使细胞进入适当的状态 在viewWillAppear我从 NSUserDefaults 读取设置 然后相应