1

在我的应用程序中,我有一个表格视图,其中包含基本样式的单元格的动态列表。每个单元格的 textLabel 都是从 xml 中提取的,并且包含下划线来代替空格。我使用标签文本来识别在 didSelectRowAtIndexPath 中点击了哪个单元格,并将其与其他 xml 文件中相同字符串的其他出现匹配。为此,标签需要包含下划线,但是如果它们是空格会更好看。

所以我的问题是,我可以将 labelText 设置为将下划线显示为空格,但保留底层字符串中的下划线,以便它仍然与使用下划线的 xml 匹配吗?

4

5 回答 5

3

你可以让 labelText 显示任何你喜欢的东西。只需使用您已用tableView:cellForRowAtIndexPath:空格替换下划线的字符串配置单元格(请参阅stringByReplacingOccurrencesOfString:withString:轻松做到这一点)。

于 2012-09-04T22:07:49.257 回答
1

您可以从 XML 中提取一个字符串数组,然后在将标签放入显示单元格时将下划线过滤为空格。这可能就是我的处理方式。或者就此而言,您可以过滤两个方向的字符串,但我认为仅存储 XML 文件中的版本可能更直接。

于 2012-09-04T22:07:58.427 回答
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 */
}

希望这可以帮助。

于 2012-09-04T22:21:46.423 回答
0

您可以创建一个新字符串,将 _ 替换为空格。这将使您的原始字符串保持不变(这通常不是问题,因为它可能是不可变的(即 NSString 不是 NSMutableString))。

self.labelText.text = [incomingString stringByReplacingOccurrencesOfString:@"_" withString:@" "];
于 2012-09-04T22:07:26.590 回答
0

您可以创建一个 NSValueTransformer 的子类,它只是将出现的 '_' 替换为 ' ' 这不会影响值,但如果按钮的 stringValue 使用值转换器选项绑定到值,则会改变外观。

这假设按钮的 stringValue 是通过绑定设置的,其他答案假设文本是手动设置的。

于 2012-09-04T22:08:21.767 回答