问题标签 [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.
objective-c - 带有 cocos2d 的 UITableView
我是Objective-C领域的学习者。我正在尝试用 cocos2d 构建一个 iPhone 应用程序。现在我想使用 UITableView 来显示 XML 文件中的数据。
是否可以将 UITableView 与 cocos2d 一起使用,是否也可以从 XML 文件中检索数据?
iphone - 在 UITableViewCell 中延迟加载图像
我的 UITableView 中有大约 50 个自定义单元格。我想在从 URL 获取图像的单元格中显示图像和标签。
我想做一个延迟加载图像,以便在加载图像时 UI 不会冻结。我尝试在单独的线程中获取图像,但每次单元格再次可见时我都必须加载每个图像(否则重用单元格会显示旧图像)
像 Facebook 这样的应用程序只为当前可见的单元格加载图像,一旦加载了图像,就不会再次加载它们。有人可以告诉我如何复制这种行为。
谢谢。
编辑
尝试在 NSMutableDictionary 对象中缓存图像会在用户快速滚动时产生问题。仅当滚动完全停止并清除内存警告时的缓存时,我才会获取图像。但是应用程序总是会收到内存警告(由于缓存的图像大小)并在重新加载之前清除缓存。如果滚动非常快,它会崩溃。
欢迎任何其他建议
ios - 如何从 Xib 文件中加载自定义 UITableViewCells?
问题很简单:如何UITableViewCell
从 Xib 文件加载自定义?这样做允许您使用 Interface Builder 来设计您的单元格。由于内存管理问题,答案显然并不简单。该线程提到了该问题并提出了解决方案,但它是 NDA 发布之前的版本并且缺少代码。这是一个很长的帖子,讨论了这个问题,但没有提供明确的答案。
这是我使用过的一些代码:
要使用此代码,请创建 MyCell.m/.h,它是您想要的组件的新子类UITableViewCell
并添加IBOutlets
。然后创建一个新的“空 XIB”文件。在 IB 中打开 Xib 文件,添加一个UITableViewCell
对象,将其标识符设置为“MyCellIdentifier”,并将其类设置为 MyCell 并添加您的组件。最后,连接IBOutlets
到组件。请注意,我们没有在 IB 中设置文件的所有者。
其他方法提倡设置文件的所有者,如果 Xib 没有通过额外的工厂类加载,则会警告内存泄漏。我在 Instruments/Leaks 下测试了上述内容,没有发现内存泄漏。
那么从 Xibs 加载单元的规范方法是什么?我们设置文件的所有者吗?我们需要工厂吗?如果是这样,工厂的代码是什么样的?如果有多种解决方案,让我们澄清每个解决方案的优缺点......
iphone - UITableViewCell 内的 UIImageView 没有得到更新
我正在创建一个自定义UITableViewCell
以包含一个UIImageView
和一些相关文本。我从 Internet 获取图像,当图像加载时,我会显示一个临时的UIImage
.
我正在使用单独的线程来获取UIImage
. 一旦UIImage
下载了一个,我就会在主线程上触发一个方法来设置图像UIImageView
(获取UIImageView
使用标签的实例)
但无论我做什么,图像都不会改变。单元格仍显示较旧的图像(对应于不同的行 - 由于单元格的重复使用)并且不会反映新图像。日志语句显示正在调用设置图像的方法。
我什至尝试将图像更改为静态图像,willDisplayCell:forRowAtIndexPath:
但即使那样图像也不会改变。
编辑
我尝试在更改后调用reloadData
,UITableView
但UIImage
仍然UIImage
没有更改。
这是相关的代码
cellForRowAtIndexPath
下载图片后在主线程调用的方法
在线程中,我将UIImage
对象添加到imagesArray
. 因此,当下次cellForRowAtIndex
调用该方法时reloadData
,UIImage
应该显示新的。
iphone - 苹果手机:TabView + TableView
我想我错过了一些简单的东西,但我无法弄清楚它到底是什么。
我正在尝试使用 设置一个应用程序UITabViewController
,其中一个选项卡将有一个 UITableView 和 UISearchBar (但没有导航控制器)。我在界面生成器中设置了UITabViewController
所有选项卡,并且视图位于它们自己的 xib 文件中。带有 的选项卡的 xib 文件UITableView
设置和连接如下。
浏览器中的内容:文件的所有者(类是我的自定义类,它是 UITableViewController 的子类)视图 -> 视图
此设置显示所有项目并且不会锁定,但是当我尝试使用 UITableView 加载选项卡时,我无法分配 DataSource 而不会崩溃。我应该怎么做才能将数据输入到这个表中,无论是在 IB 还是代码中?我的想法如下:
- 实现自定义 UITableView 类,连接到 IB 中的表视图或 Xcode 中的自定义 tableviewcontroller。
- 将头或笔记本电脑靠在墙上,直到它起作用。
更新:这是当我连接 Tableview 的数据源并委托给文件所有者(谁的类是我的自定义 tableviewcontroller)时模拟器推送到控制台的错误。
2/14/09 6:59:12 PM TabBarWillbeRight[33172] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[UIViewController tableView:numberOfRowsInSection:]: 无法识别的选择器发送到实例 0x523760
iphone - UITableView 怪异!有图片
我有一个 UIViewController 允许我查看和编辑类的信息。
它只分配一次,但它的行数、节数和数据根据用户选择的值传递给它。
例如。这里它正在编辑一个名称和类型属性(表的标题视图太大了。我这样做是为了让你看到下面的怪异)
所以我输入了一个名字,一切都很好。然后我单击地址属性,详细视图现在如下所示:
到目前为止一切正常。如果我单击取消并返回编辑名称属性,它显示正常。问题是这样的。我像这样向下滚动地址表:
然后单击保存/取消。现在当我回去编辑 name 属性时,tableview 看起来像这样!
就好像以前的表格仍然可以通过表格的标题视图看到..?
我的 viewWillAppear: 这个 uiviewcontroller 的方法如下所示:
}
在表格看起来混乱的图片中,cellForRowAtIndexPath 方法只被调用了两次,即使有 3 个单元格可见(2 个正常单元格和一个奇怪的单元格)。奇怪的单元格随着滚动而移动,并且仍然可以点击。
我可以通过在此方法中注释掉以下行来解决此问题。但是,我不想每次有人想要编辑细节时都分配一个新的控制器:
iphone - 更改 UISearchBar 文本字段的大小?
我有一个 UITableView,旁边有一个索引;我想向它添加一个 UISearchBar,但索引与“x”重叠以清除搜索。我在联系人应用程序中注意到,UISearchBar 中的文本字段已调整大小以适应这一点,但我不知道如何在我自己的应用程序中执行此操作。
我在 viewDidLoad 中尝试了以下操作,但它似乎不起作用。
有任何想法吗?
iphone - 移动 UITableView 行,然后选择它后,它只在边缘变成蓝色
我有一个UITableView
可重新排序的行,我正在使用标准UITableViewCell.text
属性来显示文本。当我点击编辑,移动一行,点击完成,然后点击该行时,内置UILabel
变为完全白色(文本和背景)并且不透明,并且单元格的蓝色阴影不会显示在其后面。是什么赋予了?有什么我不应该做的事情吗?我有一个hacky修复,但我想要真正的McCoy。
以下是如何重现它:
从 iPhone OS 2.2.1 SDK 中的标准“基于导航的应用程序”模板开始:
打开 RootViewController.m
取消注释
/li>viewDidLoad
,并启用 Edit 按钮:指定表格有几个单元格:
/li>在
/li>tableView:cellForRowAtIndexPath:
中,添加一行来设置单元格的文本属性,因此要使用内置的 UILabel 子视图:要启用重新排序,请取消注释
tableView:moveRowAtIndexPath:toIndexPath:
。默认实现是空白的,在这种情况下很好,因为模板不包含数据模型。为 Simulator、OS 2.2.1、Build and Go 配置项目。当应用程序出现时,点击编辑,然后将任意行滑动到新位置,点击完成,然后一次点击每一行。通常点击会选择一行,将其变为蓝色,并将其文本变为白色。但是在您刚刚移动的行上轻按一下,就会使 UILabel 的背景颜色为白色。结果是一个令人困惑的白色开放空间,边缘有蓝色条带。奇怪的是,在第一次虚假点击之后,另一次点击似乎可以纠正问题。
到目前为止,我已经找到了一个修复它的黑客,但我对此并不满意。它的工作原理是确保内置UILabel
是不透明的,并且在选择后立即没有背景颜色。
这似乎可行,但我不希望它永远是一个好主意。解决此问题的正确方法是什么?
ios - 复制 UITableViewCell
我正在tableView:cellForRowAtIndexPath:
从 nib 文件中读取自定义表格单元格。这对我的目的很有用,只是速度很慢。
现在,我知道从长远来看正确的做法是完全在代码中创建单元格,并使用单个视图,等等。但这是一个原型,我不想为此付出太多努力。
现在,如果我在UIViewController
子类中只阅读笔尖一次,然后tableView:cellForRowAtIndexPath:
复制它,我会很高兴。我在这里的假设是复制会比阅读笔尖更快。
这是我用来加载笔尖的东西,我从viewDidLoad:
(和retain
之后)调用
到目前为止一切都很好。但问题是:我如何一遍又一遍地复制它?甚至可能吗?
我试过[_cachedObject copy]
但[_cachedObject mutableCopy]
不UITableViewCell
支持任何一种复制协议。
如果必须,我可以告诉他们在我准备完全移除笔尖之前忽略速度,但如果这里有一个低垂的果实,我宁愿让它快一点。
有任何想法吗?
ios - 在同一行并排显示 UITableViewCell(如在联系人 -> 信息中)
如果导航到 iPhone 的电话应用程序,然后转到联系人 -> 信息(在任何联系人上).. 你会看到在联系人的底部有两个相邻的 UITableViewCells,在同一行上。在这种特殊情况下,它们是“短信”和“添加到收藏夹”
这种布局是如何实现的?如果有任何例子,那就太好了。