问题标签 [uitableview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
51719 浏览

iphone - 使用单独的委托/数据源时的 UITableView 问题

一般说明:

首先,我有一个UITableView使用 Interface Builder 放置在 Xcode 生成的视图上的内容。视图的文件所有者设置为 Xcode 生成的UIViewController. 在这个子类中,我添加了和表视图的工作实现,并通过numberOfSectionsInTableView: tableView:numberOfRowsInSection:接口生成器中的文件所有者连接到这个类。tableView:cellForRowAtIndexPath:dataSourcedelegate

上面的配置没有问题。当我想将此表视图的dataSourcedelegate- 实现移到单独的类时会出现此问题,很可能是因为除了表视图之外视图上还有其他控件,我想将表视图相关的代码移到它的自己的班级。为此,我尝试以下方法:

  • UITableViewController在 Xcode 中创建一个新的子类
  • numberOfSectionsInTableView:,tableView:numberOfRowsInSection:和的已知良好实现移动tableView:cellForRowAtIndexPath:到新的子类
  • 将 a拖到 InterfaceBuilder 中现有XIBUITableViewController的顶层 ,删除为此自动创建的/ ,然后设置的类以匹配新的子类UIViewUITableViewUITableViewControllerUITableViewController
  • 删除以前工作UITableView的现有dataSourcedelegate连接并将它们连接到新的UITableViewController

完成后,我没有工作UITableView. 我最终得到了三个看似随机发生的结果之一:

  • 加载时UITableView,我收到一个运行时错误,表明我正在发送tableView:cellForRowAtIndexPath:到一个无法识别它的对象
  • 加载时UITableView,项目无错误地进入调试器
  • 没有错误,但UITableView没有出现

通过一些调试并创建了一个基本项目来重现此问题,我通常会看到上面的第三个选项(没有错误但没有可见的表格视图)。我添加了一些 NSLog 调用,发现虽然numberOfSectionsInTableView:numberOfRowsInSection:都被调用,但cellForRowAtIndexPath:不是。我确信我错过了一些非常简单的东西,并希望答案对于比我更有经验的人来说可能是显而易见的。如果这不是一个简单的答案,我很乐意用一些代码或示例项目进行更新。谢谢你的时间!

完整的重现步骤:

  • 在 Xcode 中创建一个新的 iPhone OS,基于视图的应用程序并调用它TableTest
  • TableTestViewController.xib在 Interface Builder 中打开并将 aUITableView拖到提供的视图表面上。
  • UITableView'sdataSourcedelegate-outlets 连接到应该已经代表TableTestViewController-class 的 File's Owner。保存您的更改
  • 回到 Xcode,将以下代码添加到TableTestViewController.m:

  • Build and Go,你应该会看到这个词Hello出现在UITableView

  • 现在尝试将 thisUITableView的逻辑移到一个单独的类中,首先在 Xcode 中创建一个新文件,选择UITableViewController子类并调用该类TableTestTableViewController

  • 把上面的代码片段去掉,TableTestViewController.m放到 里面TableTestTableViewController.m,把这三个方法的默认实现替换成我们的。
  • 返回同一文件中的 Interface Builder TableTestViewController.xib,将 aUITableViewController拖入主 IB 窗口并删除UITableView自动附带的新对象
  • 将这个新的类设置UITableViewControllerTableTestTableViewController
  • 从现有的、先前工作的中删除dataSource和绑定,然后将相同的两个绑定重新连接到我们创建的新绑定。delegateUITableViewTableTestTableViewController
  • 保存更改,构建并开始,如果你得到我得到的结果,请注意UITableView不再正常运行

解决方案: 通过更多故障排除和来自iPhone 开发者论坛的帮助,我记录了一个解决方案!项目的主要UIViewController子类需要一个指向UITableViewController实例的出口。为此,只需将以下内容添加到主视图的标题 ( TableTestViewController.h) 中:

然后,在 Interface Builder 中,将 File's Owner 的新出口连接到TableTestTableViewController主 IB 窗口中。XIB 的 UI 部分无需更改。只需设置此插座,即使没有用户代码直接使用它,也可以完全解决问题。感谢那些帮助并感谢 iPhone 开发者论坛上的 BaldEagle 找到解决方案的人。

0 投票
59 回答
219631 浏览

ios - -didSelectRowAtIndexPath:未被调用

我正在编写一个在选项卡视图中带有表格视图的 iOS 应用程序。在我的UITableViewController, 我实现-tableView:didSelectRowAtIndexPath:了 ,但是当我在运行时选择一行时,没有调用该方法。不过,表格视图正在被填充,所以我知道我的控制器中的其他 tableView 方法正在被调用。

有谁知道我可能搞砸了什么来实现这一点?

0 投票
9 回答
27148 浏览

iphone - 如何将 UITableViewCellSelectionStyle 属性设置为一些自定义颜色?

我正在开发一个 iPhone 应用程序,在我的表格视图中,我想要单元格选择样式的自定义颜色,我阅读了UITableViewCell 类参考,但是为选择样式定义了三个常量(蓝色、灰色、无)。我看到一个应用程序使用了与参考中定义的颜色不同的颜色。

我们如何使用参考中定义的颜色以外的颜色?

提前致谢。

0 投票
3 回答
5423 浏览

iphone - 有没有更好的方法来确定 UITableViewCell 的正确大小?

我有一个 UITableView 单元格,它将根据其内容(可能是几行文本)具有可变大小。

因为在我布局单元格之前似乎调用了 heightForRowAtIndexPath ,我只是通过在我的文本字符串上调用 [NSString sizeWithFont] 来猜测正确的高度。在我在单元格中布置文本并知道它应该是什么大小之后,有没有更好的方法来设置高度?

0 投票
17 回答
193305 浏览

ios - 如何自定义 UITableViewCell 的背景颜色?

我想自定义 UITableView 中所有 UITableViewCells 的背景(也可能还有边框)。到目前为止,我还无法自定义这些东西,所以我有一堆默认的白色背景单元格。

有没有办法用 iPhone SDK 做到这一点?

0 投票
6 回答
60470 浏览

iphone - 如何删除 UITableView 的边框?

我对 UITableView 控件进行了子类化,并将样式分组,但我不需要单元格分隔符。我尝试将表格视图的 separatorStyle 设置为无,但它不起作用。谁能帮我吗?

0 投票
9 回答
11575 浏览

iphone - UITableView 标头中的 UIButton 忽略大多数触摸

我有一个按钮,我将其添加为表格视图的 tableHeaderView 的子视图。该按钮看起来很好,并且点击并按住它会间歇性地工作 - 但在大多数情况下,它没有响应。我尝试将其添加为表格本身的子视图;效果差不多。我认为问题可能出在滚动视图的触摸拦截上,但是在表格上禁用滚动也没有效果。

难道我做错了什么?有人遇到过这种情况么?

编辑-澄清一下,我说的是分组样式表中的主表标题,而不是部分标题;认为基本上是仿照“联系人”屏幕。

0 投票
4 回答
18334 浏览

iphone - 如何重置 UITableView 的滚动位置?

我想完全重置 UITableView 的滚动位置,以便每次打开它时,它都会显示最顶部的项目。换句话说,我想每次打开表格视图时都将其滚动到顶部。

我尝试使用以下代码,但看起来我误解了文档:

这是错误的方法吗?

0 投票
12 回答
58033 浏览

iphone - 是否可以配置 UITableView 以允许多选?

对于 iPhone,是否可以配置 UITableView 使其允许多选?

我已经尝试-setSelected:animated:为每个 UITableViewCell 覆盖,但是试图捏造所需的行为是很棘手的,因为很难将真正的取消选择与 UITableView 认为我因选择另一个单元格而取消选择的取消选择区分开来!

希望有人能帮忙!

谢谢,

缺口。

0 投票
1 回答
1345 浏览

iphone - Exit Edit Mode

I have an array of objects which populate a UITableView. When a user removes the last object from the array, I automatically create a new "default" object. However, in the TableView, when the user gets there, the list is still in "Edit" mode. Is there a way for me to programatically set the TableView back to "normal" mode again?