2015-04-29 81 views
0

我有奇怪的问题;有谁知道为什么下面的表视图不加载我的自定义单元格?是的,数据源和委托连接到视图控制器:)我以前做过这个,但突然之间它就像缺少一些东西。自定义单元格不在tableview中加载?

.H

@interface MyAccountViewController : UIViewController { 

    IBOutlet UITableView *StorageTableView; 

    NSArray *StoredItems; 
    NSMutableData *data; 
    } 

.M

 - (int)numberOfSectionsInTableView: (UITableView *)tableview 

     { 
      return 1; 

     } 

     - (int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
     { 

      return [StoredItems count]; 

     } 

     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *DoctorsTableIdentifier = @"StorageItemTableViewCell"; 

    StorageItemTableViewCell *cell = (StorageItemTableViewCell *)[tableView dequeueReusableCellWithIdentifier:DoctorsTableIdentifier]; 
    if (cell == nil) 
    { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"StorageItemTableViewCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 



     NSDictionary *node = [StoredItems objectAtIndex:indexPath.row]; 
     [[cell itemName] setText:[node objectForKey:@"title"]]; 
     [[cell itemDescrip] setText:[[[[node objectForKey:@"body"] objectAtIndex:0] objectForKey:@"raw"] objectForKey:@"value"]]; 

    } 
    return cell; 
} 

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     return 99; 
    } 

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 


    } 
+0

你做了什么故障?数据源方法是否被调用? [StoredItems计数]返回的是什么? – rdelmar

回答

-1

的一个大问题是,你只设置每个单元一次。您需要将代码更改为:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *DoctorsTableIdentifier = @"StorageItemTableViewCell"; 

    StorageItemTableViewCell *cell = (StorageItemTableViewCell *)[tableView dequeueReusableCellWithIdentifier:DoctorsTableIdentifier]; 
    if (cell == nil) 
    { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"StorageItemTableViewCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 
    } 

    cell.itemName.text = [[StoredItems objectAtIndex:indexPath.row] objectForKey:@"name"]; 
    cell.itemDescrip.text = [[StoredItems objectAtIndex:indexPath.row] objectForKey:@"description"]; 

    return cell; 
} 

你还需要确保[StoredItems count]返回一个非零值。

+0

即使StoredItems是空的,就不是我的电池仍然加载,只是没有数据(例如,用默认的文本标签)? – Brittany

+0

不,它'StoreItems'是空的,那么你的表就设置为零行。在这种情况下,'cellForRowAtIndexPath'永远不会被调用。 – rmaddy

+0

Gotcha。我似乎无法找到一个方法来NSLog的StoredItems因为tableview中从未实际负载(例如运行甚至从来没有得到至于我在StoredItems?断点)有另一种方式,看看里面有什么了?对不起,新问题大声笑。 – Brittany

1

你已经注册使用您的自定义单元格?

UINib *nib = [UINib nibWithNibName:@"StorageItemTableViewCell" bundle:nil]; 
[self.StorageTableView registerNib:nib forCellReuseIdentifier:@"StorageItemTableViewCell"]; 
+0

你通常可以把它放在viewDidLoad() – user3353890

相关问题