导航后无法显示表格视图

时间:2015-04-12 08:04:37

标签: ios objective-c uitableview uinavigationcontroller

我遇到了一个问题,即从第一页导航后第二页的表格视图无法显示。

第一页重定向代码为:

- (IBAction)searchProducts:(id)sender {
    ProductsViewController *proViewController = [[ProductsViewController alloc] init];
   [self.navigationController pushViewController:proViewController animated:YES];
}

在productsViewController中:

#import "ProductsViewController.h"
#import "OriginViewController.h"
#import "Product.h"

@interface ProductsViewController ()

@end

@implementation ProductsViewController
NSArray *products;

- (void)viewDidLoad {
    [super viewDidLoad];

    Product *product1 = [Product new];
    product1.name = @"马克杯";
    product1.detail = @"¥57.00 - 64.00";
    product1.imageFile = @"cup1.jpg";

    products = [NSArray arrayWithObjects:product1, nil];

    UIEdgeInsets inset = UIEdgeInsetsMake(5, 0, 0, 0);
    self.tableView.contentInset = inset;
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return products.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"INIT CELL.");

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    Product *product = [products objectAtIndex:indexPath.row];
    UIImageView *productImageView = (UIImageView *)[cell viewWithTag:100];
    productImageView.image = [UIImage imageNamed:product.imageFile];

    UILabel *productNameLabel = (UILabel *)[cell viewWithTag:101];
    productNameLabel.text = product.name;

    UILabel *productDetailLabel = (UILabel *)[cell viewWithTag:102];
    productDetailLabel.text = product.detail;

    return cell;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end

可以肯定两点:

  • 已调用CellForRowAtIndexPath方法。
  • 已调用ViewDidLoad。

有人对我有暗示吗?感谢。

2 个答案:

答案 0 :(得分:0)

如果您使用UITableViewCell而不使用自定义标记,则无需设置标记。

你可以做到

[cell.imageView  setImage:[UIImage imageNamed:product.imageFile]];
[cell.textLabel setText:product.name];
[cell.detailLabel setText:product.detail];

如果您使用自定义单元格,则可以设置标记以检索视图或仅设置属性,或者您可以根据需要采用任何方法。但是,如果您使用Apple的默认UITableViewCell,则默认情况下会为您提供包含labelimageView s的特定类型的单元格。

查看here了解更多信息。

答案 1 :(得分:0)

填充数组后,尝试调用

  

[myTableView reloadData];

它调用UITableView的委托方法,并将数据设置为数组中的单元格。