如何单独创建UITableView和详细视图

时间:2012-07-12 06:45:48

标签: iphone ios xcode uitableview ios5

我使用基于单一视图创建了一个应用程序。现在我必须显示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

我如何才能进行长文本和图像显示。任何想法都可以。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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];
}