在iOS中显示长文本选项的最佳方式?

时间:2013-03-31 13:13:35

标签: ios uipickerview

我正在创建一个用户选择几个不同输入的应用程序(非实际示例:汽车品牌,里程和颜色)。每个选择都有一些定义的值可供选择,每个句子长一个或两个句子。我想知道显示这个的最佳方式是什么。

选择器视图不会很好用,因为有些选项长了两个句子。我可以使用带有表格的模态或推送视图,但我不确定根据惯例,最“正确”的方式是什么?让我们说我使用模态视图,当用户在表格中选择某些内容时,它是否违反任何约定?

编辑: 为了使自己更清楚,下面是我正在谈论的层次结构的一个例子。

Example

1 个答案:

答案 0 :(得分:1)

您可以随时关闭当前的模态视图控制器。 这样做没有“正确的方法”。当用户选择表格视图单元格时,您可以在UITableViewDelegate方法中关闭模态视图控制器:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

  [tableView deselectRowAtIndexPath:indexPath animated:YES];

  /* dismiss your modal view controller

   through the UIViewController method
   - (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
   or through the UINavigationViewController method
   - (UIViewController *)popViewControllerAnimated:(BOOL)animated

   depending on the way you presented it in the first place. */

}

表格视图是您的最佳选择,用于显示长文字选项。 您可以通过UITableViewDelegate方法调整表视图中每个单元格的高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
   return /*appropriate cell height in order to accommodate long text */;
}

此外,如果您想计算任何文字的高度,您可以这样做:

// get the table view width
CGFloat tableViewWidth = [tableView bounds].size.width;

// get your piece of text
NSString *text = /*your text*/

CGFloat textHeight = [text sizeWithFont:[UIFont systemFontOfSize:18]/*or any font you want*/
                      forWidth:tableViewWidth 
                      lineBreakMode:NSLineBreakByWordWrapping].height;