【问题标题】:Why is UISwitch only visible if I rename the class?为什么 UISwitch 只有在我重命名类时才可见?
【发布时间】:2010-08-28 21:18:07
【问题描述】:

我有一个名为 OptionsTableViewController 的类,它继承了 UITableViewController。我将超类更改为实现 UITableViewDelegateUITableViewDataSource 协议的 UIViewController,因为我需要 tableView 处于特定位置。

现在一些表格单元格有一个 UISwitch 作为附件视图。开关是一个实例变量,用CGRectZero初始化。

将超类更改为 UIViewController 时,不会显示开关。但是,当我也重命名该类(到 OptionsViewController f.e.)时,它可以工作。

有人知道这种奇怪的行为是从哪里来的吗? 我还尝试清理项目,甚至删除了构建文件夹 - 但似乎唯一的解决方案是重命名类。

我之前也遇到过类似的问题,除非重命名类,否则不会显示整个表格视图。

【问题讨论】:

  • 您确定accessoryView 已正确设置吗?您能否成功记录所有附件视图以查看它们是否已真正设置?真的不可能是因为它的名字的类,应该有something错误somewhere
  • 这就是我设置附件视图的方式:cell.accessoryView = _switch; 其中开关是初始化如下的实例变量:_switch = [[UISwitch alloc] initWithFrame:CGRectZero]; 记录附件视图是什么意思?我设置了一个刹车点,应用程序在此时停止。所以命令肯定会执行。我还尝试将一个开关作为子视图添加到视图(而不是表视图),但这也行不通。我假设,该类的名称在项目中的某处使用,但不在我编写的代码中。

标签: iphone xcode uiviewcontroller uitableview uiswitch


【解决方案1】:

您是否检查过名称 OptionsTableViewController 和 OptionsViewController 是否在整个项目的其他任何地方使用,包括在界面构建器 nib 文件中?您是否酌情更改了所有名称?

【讨论】:

  • 我使用了 XCode 的 Refactor... 选项,似乎没有其他的 OptionsTableViewController 外观(cmets 除外) - 我使用了 Edit -> Find -> 在项目功能中查找以检查。我还删除了 nib 文件,因为我不使用它。
【解决方案2】:

我找到了这个问题的原因。虽然在 XCode 项目中搜索不会找到任何名为 OptionsTableViewController 的文件,但我发现它包含在 Targets -> AppName 下。 Clean All Targets 后该文件不会消失,因此很高兴知道其中仍有部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2018-01-18
    • 2015-08-15
    • 2013-02-14
    • 1970-01-01
    相关资源
    最近更新 更多