2014-05-11 7 views
2

У меня есть tableView в дуговом проекте. Когда я прокручиваю его даже на секунду, все данные скрываются или исчезают.UITableViewCell Data исчезает после прокрутки

Я передаю данные с другого контроллера через свойство Strong.

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

Смежные вопросы