我想在我的iPhone应用程序中添加一个自定义表格,它应该看起来和工作方式类似于显示通知的Facebook应用程序中使用的表格。它应该包含带有链接的行。文本应为黑色,而可点击部分应显示为蓝色。
正如已经想到的那样,标签只有一种字体,颜色等等,你不能在其中混合样式,我将不得不使用不同的组件。可标签文本部分可能是UIButtons,其自定义样式没有任何边框。
我尝试了不同的approches来构建自定义单元格。我使用Interface Builder来布局组件,但由于不同的部分具有可变长度,因此它们相互重叠。我还尝试将UIButton和UILabel的实例作为子视图添加到单元格的contentView中,如Apple's tutorial中所描述的那样。这样做的问题是:当使用“initWithFrame:...”创建组件时,组件的位置和大小是固定和设置的。
简而言之,我想添加没有固定位置或大小的标签和按钮,按钮可单击,单元格高度应根据内容自动设置。
以下是Facebook的应用程序通知视图的屏幕截图: faceboo app notifications http://img84.imageshack.us/img84/4662/photodn.jpg
答案 0 :(得分:2)
选项1:使用UIWebview显示文本并将其格式化为HTML。对于链接,请使用发送回应用程序的自定义URL,该URL通过显示相应的视图进行响应。
选项2:使用NSString UIKit Additions直接管理标签的大小或将文本绘制成可用作按钮的图像。在任何一种情况下,您将使用加法的方法来计算字符串的显示大小(以像素为单位),然后在tableview的委托将单元格返回到tableview之前根据需要调整单个显示视图的大小(标签,按钮,图像等) 。
任何一个选项都需要仔细编码。当iPhoneOS支持属性字符串时会很好。
看起来像Three20 has a styled text view.看起来你也可以放入表格并支持链接。我没有使用它,但它可能会做你想要的。
答案 1 :(得分:1)
你会认为这很容易,但实际上非常难受。 UIKit没有为此设置。最简单的方法是使用Three20库 - 至少阅读代码,这样你就可以了解它需要什么。
OS 4中可能存在一些使其更容易的东西。如果您发现,请发布!
答案 2 :(得分:0)
在你的facebook示例中,似乎只有一行有一个换行符。
要允许换行符,只需将其添加到您的cellForRowAtIndexPath
即可
// load cell description; set nrOfLines to 0 to allow linebreaks
cell.detailTextLabel.numberOfLines = 0;
有了这个,你应该能够处理固定位置的动态内容。