2013-06-05 4 views
0

3 가지 다른 공유 일정에서 이벤트를 가져 와서 날짜별로 정렬 된 앱을 UITableView에 표시하는 앱을 개발 중입니다. 첫 일정은 "TV에 표시 스포츠"입니다 두 번째 일정은 "무대에 라이브 음악" 세 번째 일정은 고정 된 이벤트이다 (매주 목요일은 "숙녀 밤"처럼)UITableView에 이미지를 표시하는 올바른 방법은 무엇입니까?

나는 작은을 보여 드리고자입니다 이미지는 셀에 표시되며 이미지는 이벤트에 따라 변경해야합니다. 지금 내가하는 일은 이벤트 설명에 이미지 파일 이름을 쓰고 이미지를 설정하는 것입니다. 내가하고 싶은 무엇

cell.imageView.image = [UIImage imageNamed:[entry valueForKeyPath:@"content.$t"]]; 

는 캘린더 이름, 아니면 이벤트 제목

의 내용이 나는 그것이 작동

NSArray *gdWho = entry[@"gd$who"]; 
NSString *calendar = gdWho[0][@"valueString"]; 
if([calendar isEqualToString:@"Live Music on Stage"]) 
{ 
    cell.imageView.image = [UIImage imageNamed:@"music-notes-40x40.jpg"]; 
} 

을 시도 중 하나에 따라 이미지를 설정하는 것이 었습니다 하지만 테이블을 스크롤하자마자 뒤죽박죽이됩니다. 스크롤 할 때 셀 인덱스 경로가 변경되어 내 코드를 사용할 수 없으므로 예상 된 결과라고 어딘가에서 읽습니다.

하지만 어떻게 할 수 있습니까? 누군가 올바른 방향으로 나를 가리킬 수 있을까요 - 나는 실제 무대에서 라이브 연주중인 아티스트의 이미지를 넣을 수 있기를 원합니다. 따라서 NSString = [entry valueForKeyPath:@"title.$t"]에 "dennis"라는 이름이 포함 된 경우 이미지를 표시하는 것이 가장 좋습니다.

+0

어디에서 indexpath가 변경된 것을 읽었습니까? indexpath는 항상 주어진 셀에 맞는 것이고 일관성이 없다면 아무 일도 일어나지 않을 것입니다. – rooster117

+0

설명 및 기타 이벤트 데이터를받는 곳마다 이미지 유형을 가져와야합니다. –

답변

3

그것은 작동하지만 곧 나는 그들이

혼동 테이블을 스크롤이 UITableViewCell "재활용"에 문제가 있음을 나타냅니다. tableview:cellforrowatindexpath:의 코드를 변경하여 처음으로 셀을 만들 때뿐만 아니라 cell.imageView.image을 무조건 설정하는 방식으로 변경해야합니다.

는 또한 다음과 같이 사전에 조회와 다양한 특정 값에 대한 calendar을 확인 if 문 체인을 대체 할 수있는 :

// This code goes into your viewDidLoad method. imageForCalendarType is an ivar 
imageForCalendarType = @{ 
    @"Live Music on Stage" : [UIImage imageNamed:@"music-notes-40x40.jpg"] 
, @"Sports Shown on TV" : [UIImage imageNamed:@"sport-tv-40x40.jpg"] 
, @"Fixed Event"   : [UIImage imageNamed:@"fixed-40x40.jpg"] 
}; 

는 이제 사전에서 이미지를 사용할 수 있습니다, like :

// This goes into your tableview:cellforrowatindexpath: method 
cell.imageView.image = imageForCalendarType[calendar]; 
+0

와우 - 완벽하게 작동합니다. 한 질문 : 고정 행사 일정은 4 가지 이벤트가 포함되어 : 숙녀 밤 학생 밤 세인트 패트릭 데이 월요일 잼을 는 이러한 사이에 정렬하려면 imageForCalendarType 사전을 변경할 수 있습니까? 아니면'CellForRowAtIndexPath' 메쏘드에 if 문을 다시 추가해야합니까? – catu

+0

이미 이벤트 제목을 다음과 같이 셀에 표시하고 있습니다. NSDictionary * entry = sectionEntries [index] [indexPath.row]; cell.textLabel.text는 = [항목 valueForKeyPath : @ ". 제목 $의 t"];' – catu

+1

당신이 조회 키를 만들 수 있습니다 @catu' "고정 이벤트"'사진 두 부분으로 키 @ (예를 들어,'@ "고정 이벤트 - 숙녀의 밤", "@ 고정 이벤트 - 학생의 밤"등). 그런 다음 'calendar'가 '@ "Fixed Event"인 조건을 추가하고, "imageForCalendarType"에서 조회 할 복합 키를 만듭니다 (예 : '[NSString stringWithFormat : @ "% @ - % @", calendar, subtypeName]'과 함께. – dasblinkenlight