我正在创建一个用户选择几个不同输入的应用程序(非实际示例:汽车品牌,里程和颜色)。每个选择都有一些定义的值可供选择,每个句子长一个或两个句子。我想知道显示这个的最佳方式是什么。
选择器视图不会很好用,因为有些选项长了两个句子。我可以使用带有表格的模态或推送视图,但我不确定根据惯例,最“正确”的方式是什么?让我们说我使用模态视图,当用户在表格中选择某些内容时,它是否违反任何约定?
编辑: 为了使自己更清楚,下面是我正在谈论的层次结构的一个例子。
答案 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;