在我的应用程序中,我有一个tableview,其中包含Basic样式的动态单元格列表。每个单元格的textLabel都是从xml中提取的,并包含下划线代替空格。我使用标签文本来识别在didSelectRowAtIndexPath中点击了哪个单元格,并将其与其他xml文件中相同字符串的其他匹配项匹配。为了使其工作,标签需要包含下划线,但是如果它们是空格则看起来更好。
所以我的问题是,我可以设置labelText以将下划线显示为空格但保留底层字符串中的下划线,以便它仍然匹配使用下划线的xml吗?
答案 0 :(得分:3)
您可以将labelText显示为您喜欢的任何内容。在tableView:cellForRowAtIndexPath:
中,只需使用您已替换下划线空格的字符串配置单元格(请参阅stringByReplacingOccurrencesOfString:withString:
以轻松完成此操作)。
答案 1 :(得分:1)
您可以从XML中提取一个字符串数组,然后在将标签放入显示单元格时将下划线过滤到空格中。这可能就是我接近它的方式。或者就此而言,您可以在两个方向上过滤字符串,但是无论如何我可以更直接地存储XML文件中的版本。
答案 2 :(得分:1)
正如我在评论中所说,我不认为当前的设计对于要求是最佳的,但如果绝对没有别的方法可以做到这一点,而不是基本上将数据存储在单元格的标签中,我会这样做像这样:
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)ip
{
/* instantiate cell here */
NSString *cellText = /* however you need to get the cell text */;
cellText = [cellText stringByReplacingOccurrencesOfString:@"_" withString:@" "];
cell.textLabel.text = cellText;
/* whatever other cell setup you need */
}
然后在选择回调中:
- (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)ip
{
UITableViewCell *cell = [tv cellForRowAtIndexPath:ip];
NSString *cellText = cell.textLabel.text;
cellText = [cellText stringByReplacingOccurrencesOfString:@" " withString:@"_"];
/* go do whatever with cellText */
}
希望这有帮助。
答案 3 :(得分:0)
您可以创建一个用空格替换_的新字符串。这将保持原始字符串不被修改(这通常不是问题,因为它可能是不可变的(即NSString而不是NSMutableString))。
self.labelText.text = [incomingString stringByReplacingOccurrencesOfString:@"_" withString:@" "];
答案 4 :(得分:0)
您可以创建一个NSValueTransformer的子类,它只是将'_'的出现替换为''这不会影响该值,但如果按钮的stringValue绑定到该值,则会更改外观,并带有值转换器选项。
这假设按钮的stringValue是通过绑定设置的,其他答案假定文本是手动设置的。