如何分别创建 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 深入到子子视图然后进入详细视图