2014-05-11 90 views
2

我在弧項目中有一個tableView。當我滾動它甚至一秒時,所有數據都會隱藏或消失。UITableViewCell滾動後數據消失

我通過強屬性從另一個控制器傳遞數據。

CTableViewController* cTableVc=[[CTableViewController alloc] initWithNibName:@"CTableViewController" bundle:nil]; 
cTableVc.cArray=[[NSArray alloc] initWithArray:[MyVC pathForAllCardsInDocumentDiretory]]; 
cTableVc.view.frame=CGRectMake(0, 0, cTableVc.view.frame.size.width, cTableVc.view.frame.size.height); 
[self.view addSubview:cTableVc.view]; 

這裏是我的財產

@property(strong, nonatomic) NSArray* cArray; 

CTableViewController.m的tableView方法

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
// Return the number of sections. 
return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
// Return the number of rows in the section. 
return [_cardArray count]; 
} 

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

NSString *CellIdentifier = @"CTableViewCell"; 
CTableViewCell *cell = (CTableViewCell *) [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 

    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CTableViewCell" owner:self options:nil]; 
    for (id currentObject in topLevelObjects){ 
     if ([currentObject isKindOfClass:[UITableViewCell class]]){ 
      cell = (CTableViewCell *) currentObject; 
      break; 
     } 
    } 
} 

// Configure the cell... 
NSString* strPath=[cArray objectAtIndex:indexPath.row]; 
cell.cardImageView.image=[UIImage imageWithContentsOfFile:strPath]; 
cell.cardNameLbl.text=[NSString stringWithFormat:@"My Card %d", arc4random() % 9]; 
cell.selectionStyle=UITableViewCellSelectionStyleNone; 


return cell; 
} 
+0

您的'cellForRowAtIndex:'不會使用'cArray'中的數據。爲什麼不? – rmaddy

+0

實際上它使用我刪除該行來創建簡單。編輯說明清楚。 – NaXir

+0

什麼是'[self.view cTableVc.view];'在第一段代碼中? – sha

回答

21

的問題是,你創建的視圖控制器,並添加新的視圖控制器的視圖代碼一個子視圖。就目前而言,您不會保留對視圖控制器的引用。所以視圖控制器被取消分配,並且表中沒有委託或數據源。

正確的解決方案是利用容器方法UIViewController並將新的視圖控制器添加到當前的視圖控制器。

電話:

[self addChildViewController:cTableVc]; 

後:

self.view addSubview:cTableVc.view]; 

UIViewController的文檔,因爲有更多需要不僅僅是這一行做了。

+0

如此優雅的答案,謝謝! – Max

+0

@rmaddy,謝謝。你拯救了我的一天。 – iKT