2012-01-13 2 views
1

웹 브라우저 인 내 기본보기의 팝업 표시 안에 tableview가 있습니다. 사용자가 웹 페이지를 방문 할 때마다 최근에 방문한 웹 사이트 목록에 페이지를 추가하려고합니다. 테이블 뷰의 데이터 소스 인 배열에 URL을 추가하도록 코드를 설정했습니다. 테이블보기는 방문한 첫 번째 사이트 만 표시하며 그 이후에는 아무 것도 표시하지 않습니다. 그러나 배열을 추가 한 후 NSLog 문을 사용하여 사이트 보여 때문에 배열에 사이트를 추가하는 알으십시오. 그러나 그들은 여전히 ​​테이블에 나타나지 않을 것입니다. 누구든지 나를 도울 수 있습니까?배열에 개체를 추가 한 후 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 [recentlyVisitedUrls count]; 
} 
+1

'[tableView reloadData]'를 (를) 호출 하시겠습니까? –

+0

예. 이전에 있던 데이터를 삭제합니다. – Slayter

답변

2

당신이 애니메이션 업데이트를 wan't 경우 – tableView:numberOfRowsInSection:

2

[tableView reloadTable]; 

을보십시오. 또한

+0

데이터를 추가하기 전에 데이터를 넣어야합니다. [tableView reloadData]; 또한 이전에 있던 데이터도 사라집니다. – Slayter

+0

numberOfSectionsInTableView :, numberOfRowsInSection : 및 cellForRowAtIndexPath :에 대한 대리자 메서드를 표시합니다. 형식을 정하기 위해 원래 질문을하십시오. – Jim

+0

질문이 – Slayter

0

에서 배열의 정확한 길이를 반환하고 있는지 확인, 당신은 호출 할 수

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]

당신이 애니메이션을해야하는 경우 것 더 읽기 : Table View Programming Guide for iOS, Batch insert… 부분이 필요합니다.

0

큰 테이블이있는 경우 [tableView reloadData]이 적합하지 않을 수 있습니다. 또한보기가 테이블 시작 부분으로 재설정되므로 바람직하지 않을 수도 있습니다. 당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_model.recordCount - 1 inSection:0]; 
[_tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight]; 
[_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO]; 

은 BTW, _model이 예에서 테이블의 데이터 위임 클래스입니다.

또한 삽입하기 전에 데이터 위임자가 총 개수를 올바르게 업데이트하는지 확인해야합니다. 그렇지 않으면 앱이 insertRowsAtIndexPaths에서 중단됩니다.

관련 문제