如何分别创建 UITableView 和详细视图

Posted

技术标签:

【中文标题】如何分别创建 UITableView 和详细视图【英文标题】:How to create UITableView and detail view separately 【发布时间】:2012-07-12 06:45:47 【问题描述】:

我已经使用基于单一视图的应用程序创建了一个应用程序。现在我必须显示 15 个菜单和每个菜单的描述。所以我想到使用 UITableView 插入其中。选择一个单元格时它应该显示长文本和图像内容。我是否必须为每个描述创建每个ViewController 或以编程方式添加描述的任何快捷方式 这是我的表格视图代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


// Set up the cell...
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:15];
cell.textLabel.text = [NSString  stringWithFormat:@"Cell Row #%d", [indexPath row]];

return cell;


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
// open a alert with an OK and cancel button
NSString *alertString = [NSString stringWithFormat:@"Clicked on row #%d", [indexPath row]];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:alertString message:@"" delegate:self cancelButtonTitle:@"Done" otherButtonTitles:nil];
[alert show];
[alert release];

这是用于在单元格被触摸时创建UIAlertView

我该如何做长文本和图像显示。请有任何想法。

【问题讨论】:

这将取决于您希望在这 15 个视图控制器上显示的内容以及所涉及的复杂性。 在详细视图中,您可以获得点击的索引,您可以显示其详细视图!! 【参考方案1】:

我认为您可以使用导航控制器并在其上推送 tableView。在选择表格的一个单元格时,您应该推送一个 detailView(所有单元格的一个详细视图)。这仅在您必须在 detailView 中显示相同格式的详细信息数据时才有效。否则,如果您必须为每个选择设置不同的屏幕,那么您可以设计所有那些也会使其变得沉重的屏幕。

【讨论】:

感谢您的回答,这是针对单个单元格的描述..但是我需要 tableview 中 15 个单元格的 15 种描述..我怎样才能做到这一点? 如果所有单元格描述的UI设计都相同,只需要更改描述字段中的字段内容,则可以根据选择的row.index更改内容。如果所有的描述都有不同的用户界面,那么你需要为所有人设计不同的。【参考方案2】:

您可以创建一个使用图像和文本初始化的 ViewController,在视图控制器内部您应该创建 UITextView 和 UIImageView。 ViewController 必须是这样的:

@interface ViewController : UIViewController 
    UIImageView *imageView;
    UITextView *textView;


-(id)initWithText:(NSString *)text image:(UIImage *)image;

@end

@implementation ViewController

-(id)initWithText:(NSString *)text image:(UIImage *)image 
    if (self = [super init]) 
        //ImageView initialization
        imageView.image = image;
        //TextViewInitialization
        textView.text = text;
    
    return self;


@end

在表格视图的视图控制器中,您可以创建 2 个数组,其中包含对应的图像和文本到单元格。 那么 didSelectRowAtIndexPath: 必须是这样的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    ViewController *vc = [[ViewController alloc]initWithText:[textArray objectAtIndex:indexPath.row] image:[imagesArray objectAtIndex:indexPath.row]];
    [[self navigationController] pushViewController:vc animated:YES];
    [vc release];

【讨论】:

感谢您的回答,这是针对单个单元格的描述..但是我需要 tableview 中 15 个单元格的 15 种描述..我怎样才能做到这一点? 您需要用 15 个不同的字符串填充 textArray。数组中字符串的索引必须对应单元格...

以上是关于如何分别创建 UITableView 和详细视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一个视图中呈现 UITableView 及其详细视图

UITableView - 分段的 Tableview 深入到子子视图然后进入详细视图

表视图单元格 - UITableView - 无法在详细视图中显示多行

初始化时如何使 UITextView 不成为焦点?

如何在 uitableview 单元格上创建两个单选按钮

UITableView 单元格不显示正确的详细信息