iPhone YouTube 앱의 '가장 많이 사용되는' 섹션과 인터페이스의 일부가 정확히 일치하는 iPhone 앱을 제작할 예정입니다.UITableView가 제대로 업데이트되지 않습니다. (심지어 reloadData 호출로)
이 '인기'섹션 하단에 탭 바에서 액세스 및 상단의 탐색 바는 선택하기 UISegmentedControl이 포함되어 있습니다', 오늘 이번 주, 월 등 ..'
의 대부분 때문에 응용 프로그램은 매우 유사한 구조화 된 내용을 포함하는 셀이있는 UITableViews로 구성되어 있습니다. 공통적 인 내용을 만들었습니다. MyAppTableViewController을 상속 받았으며 UITableViewController을 상속합니다. 내 ' popular'섹션은 PopularTableViewController으로 구성되며 MyAppTableViewController을 상속합니다. 실제 UITableView은 MyAppTableViewController 내에 있습니다.
PopularTableViewController 메소드 가지고
- (void) segmentChangeTimeframe:(id)sender {
UISegmentedControl *segCtl = sender;
if([segCtl selectedSegmentIndex] == 0)
{
// Call [self parse-xml-method-which-resides-in-MyAppTableViewController]
}
//... ... ...
}
MyAppTableViewController가 NSXMLParser 이용한다을 따라서 코드 가지고
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[self.myTableView reloadData];
}
(를 업데이트하는 다른 방법이있다을 테이블 뷰에서 데이터를 가져 오는 데이터 구조)
콘솔 출력 코드를 xml 구문 분석 메서드에 넣었습니다. 실행하면 다른 세그먼트를 선택하면 올바른 xml 파일이 올바르게 구문 분석되고 데이터 구조에 올바른 값이 포함 된 것으로 보입니다.
문제는 표 셀의 내용이 변경되지 않는다는 것입니다. grr! 이상하지 않으면 ... 셀이 보이지 않게 스크롤 된 다음 다시보기로 ... 그 다음에 변경됩니다!
이 문제에 대해 많은 검색을 수행했으며 유사한 문제에 대한 한 가지 제안은 [self.myTableView reloadData]를 자체 메서드에 배치하는 것이 었습니다. 는을 myReloadDataMethod 후 사용
[self performSelectorOnMainThread:@selector(myReloadDataMethod) withObject:nil waitUntilDone:NO];
내가 parserDidEndDocument 방법으로 위의 코드를 배치 시도하고 전혀 차이를 만들어 없습니다! 나는 절대적으로 곤란을 겪고 있으며 아무도 여기에서 무슨 일이 일어나고 있는지 전혀 궁금해하고 있습니다.
업데이트 :
세포를 채울 수있는 코드로 수행됩니다
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:MyIdentifier] autorelease];
}
// Set up the cell
int itemIndex = [indexPath indexAtPosition: [indexPath length] - 1];
NSString *artistName = [[myItemList objectAtIndex: itemIndex] objectForKey: @"itemA"];
NSString *mixName = [[myItemList objectAtIndex: itemIndex] objectForKey: @"itemB"];
cell.textLabel.text = itemA;
cell.detailTextLabel.text = itemB;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
return cell;
}
위의 코드에 myItemList가있는 곳도 MyAppTableViewController.
당신이 당신의 세포 – Daniel
@Daniel 채우는 데 사용하는 C 송시 게시 - 요청에 따라 나는 질문을 업데이트 한합니다. – IAmFledge
문제와 관련이 없지만 itemIndex를 훨씬 쉽게 가져올 수 있습니다. NSUInteger itemIndex = [indexPath row]. –