问题标签 [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.
iphone - 使用单独的委托/数据源时的 UITableView 问题
一般说明:
首先,我有一个UITableView
使用 Interface Builder 放置在 Xcode 生成的视图上的内容。视图的文件所有者设置为 Xcode 生成的UIViewController
. 在这个子类中,我添加了和表视图的工作实现,并通过numberOfSectionsInTableView: tableView:numberOfRowsInSection:
接口生成器中的文件所有者连接到这个类。tableView:cellForRowAtIndexPath:
dataSource
delegate
上面的配置没有问题。当我想将此表视图的dataSource
和delegate
- 实现移到单独的类时会出现此问题,很可能是因为除了表视图之外视图上还有其他控件,我想将表视图相关的代码移到它的自己的班级。为此,我尝试以下方法:
UITableViewController
在 Xcode 中创建一个新的子类- 将
numberOfSectionsInTableView:
,tableView:numberOfRowsInSection:
和的已知良好实现移动tableView:cellForRowAtIndexPath:
到新的子类 - 将 a拖到 InterfaceBuilder 中现有XIB
UITableViewController
的顶层 ,删除为此自动创建的/ ,然后设置的类以匹配新的子类UIView
UITableView
UITableViewController
UITableViewController
- 删除以前工作
UITableView
的现有dataSource
和delegate
连接并将它们连接到新的UITableViewController
完成后,我没有工作UITableView
. 我最终得到了三个看似随机发生的结果之一:
- 加载时
UITableView
,我收到一个运行时错误,表明我正在发送tableView:cellForRowAtIndexPath:
到一个无法识别它的对象 - 加载时
UITableView
,项目无错误地进入调试器 - 没有错误,但
UITableView
没有出现
通过一些调试并创建了一个基本项目来重现此问题,我通常会看到上面的第三个选项(没有错误但没有可见的表格视图)。我添加了一些 NSLog 调用,发现虽然numberOfSectionsInTableView:
和numberOfRowsInSection:
都被调用,但cellForRowAtIndexPath:
不是。我确信我错过了一些非常简单的东西,并希望答案对于比我更有经验的人来说可能是显而易见的。如果这不是一个简单的答案,我很乐意用一些代码或示例项目进行更新。谢谢你的时间!
完整的重现步骤:
- 在 Xcode 中创建一个新的 iPhone OS,基于视图的应用程序并调用它
TableTest
TableTestViewController.xib
在 Interface Builder 中打开并将 aUITableView
拖到提供的视图表面上。- 将
UITableView
'sdataSource
和delegate
-outlets 连接到应该已经代表TableTestViewController
-class 的 File's Owner。保存您的更改 - 回到 Xcode,将以下代码添加到
TableTestViewController.m:
Build and Go,你应该会看到这个词
Hello
出现在UITableView
现在尝试将 this
UITableView
的逻辑移到一个单独的类中,首先在 Xcode 中创建一个新文件,选择UITableViewController
子类并调用该类TableTestTableViewController
- 把上面的代码片段去掉,
TableTestViewController.m
放到 里面TableTestTableViewController.m
,把这三个方法的默认实现替换成我们的。 - 返回同一文件中的 Interface Builder
TableTestViewController.xib
,将 aUITableViewController
拖入主 IB 窗口并删除UITableView
自动附带的新对象 - 将这个新的类设置
UITableViewController
为TableTestTableViewController
- 从现有的、先前工作的中删除
dataSource
和绑定,然后将相同的两个绑定重新连接到我们创建的新绑定。delegate
UITableView
TableTestTableViewController
- 保存更改,构建并开始,如果你得到我得到的结果,请注意
UITableView
不再正常运行
解决方案:
通过更多故障排除和来自iPhone 开发者论坛的帮助,我记录了一个解决方案!项目的主要UIViewController
子类需要一个指向UITableViewController
实例的出口。为此,只需将以下内容添加到主视图的标题 ( TableTestViewController.h
) 中:
和
然后,在 Interface Builder 中,将 File's Owner 的新出口连接到TableTestTableViewController
主 IB 窗口中。XIB 的 UI 部分无需更改。只需设置此插座,即使没有用户代码直接使用它,也可以完全解决问题。感谢那些帮助并感谢 iPhone 开发者论坛上的 BaldEagle 找到解决方案的人。
ios - -didSelectRowAtIndexPath:未被调用
我正在编写一个在选项卡视图中带有表格视图的 iOS 应用程序。在我的UITableViewController
, 我实现-tableView:didSelectRowAtIndexPath:
了 ,但是当我在运行时选择一行时,没有调用该方法。不过,表格视图正在被填充,所以我知道我的控制器中的其他 tableView 方法正在被调用。
有谁知道我可能搞砸了什么来实现这一点?
iphone - 如何将 UITableViewCellSelectionStyle 属性设置为一些自定义颜色?
我正在开发一个 iPhone 应用程序,在我的表格视图中,我想要单元格选择样式的自定义颜色,我阅读了UITableViewCell 类参考,但是为选择样式定义了三个常量(蓝色、灰色、无)。我看到一个应用程序使用了与参考中定义的颜色不同的颜色。
我们如何使用参考中定义的颜色以外的颜色?
提前致谢。
iphone - 有没有更好的方法来确定 UITableViewCell 的正确大小?
我有一个 UITableView 单元格,它将根据其内容(可能是几行文本)具有可变大小。
因为在我布局单元格之前似乎调用了 heightForRowAtIndexPath ,我只是通过在我的文本字符串上调用 [NSString sizeWithFont] 来猜测正确的高度。在我在单元格中布置文本并知道它应该是什么大小之后,有没有更好的方法来设置高度?
ios - 如何自定义 UITableViewCell 的背景颜色?
我想自定义 UITableView 中所有 UITableViewCells 的背景(也可能还有边框)。到目前为止,我还无法自定义这些东西,所以我有一堆默认的白色背景单元格。
有没有办法用 iPhone SDK 做到这一点?
iphone - 如何删除 UITableView 的边框?
我对 UITableView 控件进行了子类化,并将样式分组,但我不需要单元格分隔符。我尝试将表格视图的 separatorStyle 设置为无,但它不起作用。谁能帮我吗?
iphone - UITableView 标头中的 UIButton 忽略大多数触摸
我有一个按钮,我将其添加为表格视图的 tableHeaderView 的子视图。该按钮看起来很好,并且点击并按住它会间歇性地工作 - 但在大多数情况下,它没有响应。我尝试将其添加为表格本身的子视图;效果差不多。我认为问题可能出在滚动视图的触摸拦截上,但是在表格上禁用滚动也没有效果。
难道我做错了什么?有人遇到过这种情况么?
编辑-澄清一下,我说的是分组样式表中的主表标题,而不是部分标题;认为基本上是仿照“联系人”屏幕。
iphone - 如何重置 UITableView 的滚动位置?
我想完全重置 UITableView 的滚动位置,以便每次打开它时,它都会显示最顶部的项目。换句话说,我想每次打开表格视图时都将其滚动到顶部。
我尝试使用以下代码,但看起来我误解了文档:
这是错误的方法吗?
iphone - 是否可以配置 UITableView 以允许多选?
对于 iPhone,是否可以配置 UITableView 使其允许多选?
我已经尝试-setSelected:animated:
为每个 UITableViewCell 覆盖,但是试图捏造所需的行为是很棘手的,因为很难将真正的取消选择与 UITableView 认为我因选择另一个单元格而取消选择的取消选择区分开来!
希望有人能帮忙!
谢谢,
缺口。
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?