问题标签 [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 投票
5 回答
5627 浏览

objective-c - 带有 cocos2d 的 UITableView

我是Objective-C领域的学习者。我正在尝试用 cocos2d 构建一个 iPhone 应用程序。现在我想使用 UITableView 来显示 XML 文件中的数据。

是否可以将 UITableView 与 cocos2d 一起使用,是否也可以从 XML 文件中检索数据?

0 投票
7 回答
39074 浏览

iphone - 在 UITableViewCell 中延迟加载图像

我的 UITableView 中有大约 50 个自定义单元格。我想在从 URL 获取图像的单元格中显示图像和标签。

我想做一个延迟加载图像,以便在加载图像时 UI 不会冻结。我尝试在单独的线程中获取图像,但每次单元格再次可见时我都必须加载每个图像(否则重用单元格会显示旧图像)

像 Facebook 这样的应用程序只为当前可见的单元格加载图像,一旦加载了图像,就不会再次加载它们。有人可以告诉我如何复制这种行为。

谢谢。

编辑
尝试在 NSMutableDictionary 对象中缓存图像会在用户快速滚动时产生问题。仅当滚动完全停止并清除内存警告时的缓存时,我才会获取图像。但是应用程序总是会收到内存警告(由于缓存的图像大小)并在重新加载之前清除缓存。如果滚动非常快,它会崩溃。

欢迎任何其他建议

0 投票
23 回答
218499 浏览

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 加载单元的规范方法是什么?我们设置文件的所有者吗?我们需要工厂吗?如果是这样,工厂的代码是什么样的?如果有多种解决方案,让我们澄清每个解决方案的优缺点......

0 投票
1 回答
2438 浏览

iphone - UITableViewCell 内的 UIImageView 没有得到更新

我正在创建一个自定义UITableViewCell以包含一个UIImageView和一些相关文本。我从 Internet 获取图像,当图像加载时,我会显示一个临时的UIImage.

我正在使用单独的线程来获取UIImage. 一旦UIImage下载了一个,我就会在主线程上触发一个方法来设置图像UIImageView(获取UIImageView使用标签的实例)

但无论我做什么,图像都不会改变。单元格仍显示较旧的图像(对应于不同的行 - 由于单元格的重复使用)并且不会反映新图像。日志语句显示正在调用设置图像的方法。

我什至尝试将图像更改为静态图像,willDisplayCell:forRowAtIndexPath: 但即使那样图像也不会改变。

编辑
我尝试在更改后调用reloadDataUITableViewUIImage仍然UIImage没有更改。

这是相关的代码

cellForRowAtIndexPath

下载图片后在主线程调用的方法

在线程中,我将UIImage对象添加到imagesArray. 因此,当下次cellForRowAtIndex调用该方法时reloadDataUIImage应该显示新的。

0 投票
4 回答
13167 浏览

iphone - 苹果手机:TabView + TableView

我想我错过了一些简单的东西,但我无法弄清楚它到底是什么。

我正在尝试使用 设置一个应用程序UITabViewController,其中一个选项卡将有一个 UITableView 和 UISearchBar (但没有导航控制器)。我在界面生成器中设置了UITabViewController所有选项卡,并且视图位于它们自己的 xib 文件中。带有 的选项卡的 xib 文件UITableView设置和连接如下。

浏览器中的内容:文件的所有者(类是我的自定义类,它是 UITableViewController 的子类)视图 -> 视图

此设置显示所有项目并且不会锁定,但是当我尝试使用 UITableView 加载选项卡时,我无法分配 DataSource 而不会崩溃。我应该怎么做才能将数据输入到这个表中,无论是在 IB 还是代码中?我的想法如下:

  1. 实现自定义 UITableView 类,连接到 IB 中的表视图或 Xcode 中的自定义 tableviewcontroller。
  2. 将头或笔记本电脑靠在墙上,直到它起作用。

更新:这是当我连接 Tableview 的数据源并委托给文件所有者(谁的类是我的自定义 tableviewcontroller)时模拟器推送到控制台的错误。

2/14/09 6:59:12 PM TabBarWillbeRight[33172] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[UIViewController tableView:numberOfRowsInSection:]: 无法识别的选择器发送到实例 0x523760

0 投票
2 回答
1545 浏览

iphone - UITableView 怪异!有图片

我有一个 UIViewController 允许我查看和编辑类的信息。

它只分配一次,但它的行数、节数和数据根据用户选择的值传递给它。

例如。这里它正在编辑一个名称和类型属性(表的标题视图太大了。我这样做是为了让你看到下面的怪异)

替代文字

所以我输入了一个名字,一切都很好。然后我单击地址属性,详细视图现在如下所示:

替代文字

到目前为止一切正常。如果我单击取消并返回编辑名称属性,它显示正常。问题是这样的。我像这样向下滚动地址表:

替代文字

然后单击保存/取消。现在当我回去编辑 name 属性时,tableview 看起来像这样!

替代文字

就好像以前的表格仍然可以通过表格的标题视图看到..?

我的 viewWillAppear: 这个 uiviewcontroller 的方法如下所示:

}

在表格看起来混乱的图片中,cellForRowAtIndexPath 方法只被调用了两次,即使有 3 个单元格可见(2 个正常单元格和一个奇怪的单元格)。奇怪的单元格随着滚动而移动,并且仍然可以点击。

我可以通过在此方法中注释掉以下行来解决此问题。但是,我不想每次有人想要编辑细节时都分配一个新的控制器:

0 投票
18 回答
51369 浏览

iphone - 更改 UISearchBar 文本字段的大小?

我有一个 UITableView,旁边有一个索引;我想向它添加一个 UISearchBar,但索引与“x”重叠以清除搜索。我在联系人应用程序中注意到,UISearchBar 中的文本字段已调整大小以适应这一点,但我不知道如何在我自己的应用程序中执行此操作。

我在 viewDidLoad 中尝试了以下操作,但它似乎不起作用。

有任何想法吗?

0 投票
4 回答
5463 浏览

iphone - 移动 UITableView 行,然后选择它后,它只在边缘变成蓝色

我有一个UITableView可重新排序的行,我正在使用标准UITableViewCell.text属性来显示文本。当我点击编辑,移动一行,点击完成,然后点击该行时,内置UILabel变为完全白色(文本和背景)并且不透明,并且单元格的蓝色阴影不会显示在其后面。是什么赋予了?有什么我不应该做的事情吗?我有一个hacky修复,但我想要真正的McCoy。

以下是如何重现它:

从 iPhone OS 2.2.1 SDK 中的标准“基于导航的应用程序”模板开始:

  1. 打开 RootViewController.m

  2. 取消注释viewDidLoad,并启用 Edit 按钮:

    /li>
  3. 指定表格有几个单元格:

    /li>
  4. tableView:cellForRowAtIndexPath:中,添加一行来设置单元格的文本属性,因此要使用内置的 UILabel 子视图:

    /li>
  5. 要启用重新排序,请取消注释tableView:moveRowAtIndexPath:toIndexPath:。默认实现是空白的,在这种情况下很好,因为模板不包含数据模型。

  6. 为 Simulator、OS 2.2.1、Build and Go 配置项目。当应用程序出现时,点击编辑,然后将任意行滑动到新位置,点击完成,然后一次点击每一行。通常点击会选择一行,将其变为蓝色,并将其文本变为白色。但是在您刚刚移动的行上轻按一下,就会使 UILabel 的背景颜色为白色。结果是一个令人困惑的白色开放空间,边缘有蓝色条带。奇怪的是,在第一次虚假点击之后,另一次点击似乎可以纠正问题。

到目前为止,我已经找到了一个修复它的黑客,但我对此并不满意。它的工作原理是确保内置UILabel是不透明的,并且在选择后立即没有背景颜色。

这似乎可行,但我不希望它永远是一个好主意。解决此问题的正确方法是什么?

0 投票
5 回答
9169 浏览

ios - 复制 UITableViewCell

我正在tableView:cellForRowAtIndexPath:从 nib 文件中读取自定义表格单元格。这对我的目的很有用,只是速度很慢。

现在,我知道从长远来看正确的做法是完全在代码中创建单元格,并使用单个视图,等等。但这是一个原型,我不想为此付出太多努力。

现在,如果我在UIViewController子类中只阅读笔尖一次,然后tableView:cellForRowAtIndexPath:复制它,我会很高兴。我在这里的假设是复制会比阅读笔尖更快。

这是我用来加载笔尖的东西,我从viewDidLoad:(和retain之后)调用

到目前为止一切都很好。但问题是:我如何一遍又一遍地复制它?甚至可能吗?

我试过[_cachedObject copy][_cachedObject mutableCopy]UITableViewCell支持任何一种复制协议。

如果必须,我可以告诉他们在我准备完全移除笔尖之前忽略速度,但如果这里有一个低垂的果实,我宁愿让它快一点。

有任何想法吗?

0 投票
2 回答
1306 浏览

ios - 在同一行并排显示 UITableViewCell(如在联系人 -> 信息中)

如果导航到 iPhone 的电话应用程序,然后转到联系人 -> 信息(在任何联系人上).. 你会看到在联系人的底部有两个相邻的 UITableViewCells,在同一行上。在这种特殊情况下,它们是“短信”和“添加到收藏夹”

这种布局是如何实现的?如果有任何例子,那就太好了。