0

PList를 사용하여 테이블 뷰에서 푸시 된 뷰 컨트롤러에서 푸시 된 뷰 컨트롤러를 채우려고합니다. 더 간단하게 :테이블 뷰 컨트롤러 (didSelectRowAtIndexPath)의 정수 값 설정 PList (iOS)와 함께 사용

TableViewController -> DetailViewController -> 2ndDetailViewController

내가이 일을하려고 해요 방법은 값으로 정수를 설정하는 것입니다 (< -이 사람은 내가 채우는있어 하나입니다) 사용자가 표보기에서 행을 클릭 할 때 그런 다음 해당 정수의 값을 사용하여 PList의 올바른 값을 가리키고 해당 문자열을 꺼냅니다. 두 번째 View Controller에서 UIImageView에 PList의 이미지를 채우려고합니다. 내 didSelectRowAtIndexPath 코드는 다음과 같습니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    DealsDetailViewController *dealsDetail = [[DealsDetailViewController alloc]initWithNibName:@"DealsDetailViewController" bundle:nil]; 
    dealsDetail.dealsImageString = [[self.dealsArray objectAtIndex:indexPath.row] objectForKey:@"Image"]; 
    dealsDetail.dealsLabelString = [[self.dealsArray objectAtIndex:indexPath.row] objectForKey:@"Description"]; 
    dealsDetail.title = [[self.dealsArray objectAtIndex:indexPath.row] objectForKey:@"Name"];  

if ([[dealsArray objectAtIndex:indexPath.row] isEqual:@"Deal #1"]) { 
    dealsDetail.dealsInt = 0; 
    [dealsDetail setTitle:[dealsArray objectAtIndex:indexPath.row]]; 
} 

if ([[dealsArray objectAtIndex:indexPath.row] isEqual:@"Deal #2"]) { 
    dealsDetail.dealsInt = 1; 
    [dealsDetail setTitle:[dealsArray objectAtIndex:indexPath.row]]; 
} 

if ([[dealsArray objectAtIndex:indexPath.row] isEqual:@"Deal #3"]) { 
    dealsDetail.dealsInt = 2; 
    [dealsDetail setTitle:[dealsArray objectAtIndex:indexPath.row]]; 
} 

[self.navigationController pushViewController:dealsDetail animated:YES]; 
[dealsDetail release]; 

모든 항목이 올바르게 채워집니다. 나는 (버튼을 클릭하면) 테이블 뷰 컨트롤러와 DealsDetailViewController의 viewDidLoad 메서드에서 transactionsDetail.dealsInt의 값을 NSLog에 시도했습니다. 두 번 모두, 내가 클릭 한 행에 상관없이 '0'값을 반환합니다. 구문에서 어디에서 잘못 되었습니까?

편집 -------- 가 여기에 로그 아웃 할 때 내가 무엇을 얻을 :

NSLog(@"%@",[dealsArray objectAtIndex:indexPath.row]); 


2011-11-28 17:40:59.092 Stores Tab Bar[7386:207] { 
    Barcode = "SampleBarCode3.png"; 
    Description = "Here's the deal 3"; 
    Image = "FritoTest.png"; 
    Name = "Deal #3"; 
    Thumbnail = "dollars.png"; 
} 

그것은 정확하게 클릭있어 개체의 PLIST의 내용을 기록합니다. 그래서 (나는 그것을 제대로 테이블보기와 상세보기를 채우는 된 이후였다 추정 ...) 올바른 정보

+0

이 코드는 정상적으로 보입니다. DealsDetailViewController의 속성 선언과 이미지를 선택할 때이 값을 사용하는 코드를 포함하십시오. 문자열 형식에 오류가있어 로깅/파일 이름이 올바르게 작동하지 않는 것처럼 들립니다. – jrturton

+0

실제로 사용하지 않았습니다. 두 번째 DealsDetailViewController에서 이미지를 설정하기위한 코드를 아직 작성하지 않았기 때문에 정수가 아직 값을 보유하고 있지 않은 것으로 보였습니다. (이것이 먼저 작동하는지 확인하고 싶었습니다). 내가 누르는 버튼에 관계없이 항상 '0'을 기록하는 이유가 있을까요? – MillerMedia

+0

DetailViewConroller 또는 SecondDetailViewController 또는 둘 다에 문제가 있습니까? 두 번째 질문부터 시작하여 첫 번째 질문으로 이동하는 것 같습니다. –

답변

2
if ([[dealsArray objectAtIndex:indexPath.row] isEqual:@"Deal #1"]) { 
    dealsDetail.dealsInt = 0; 
    [dealsDetail setTitle:[dealsArray objectAtIndex:indexPath.row]]; 
} 

dealsArray 내에서 객체의 당신의 이전 사용을 부정하는 것을 잡는 것. 위의 줄에있는 사전과 같습니다 :

dealsDetail.dealsImageString = [[self.dealsArray objectAtIndex:indexPath.row] objectForKey:@"Image"]; 

그리고 여기에서는 정적 문자열과 비교합니다. 무슨 일이 일어나고있는 지 조건이 없으면 나머지는 0에 머무르면 어떤 것도 일치하지 않는다는 것입니다.

if ([[[dealsArray objectAtIndex:indexPath.row] objectForKey:@"Name"] isEqualToString:@"Deal #1"]) { 

주 내가 사전에서 (위의 편집에 따라 키의 존재를 @ "이름") 또 다른 objectForKey을 복용하고, 나는 또한 올바른 방법입니다 isEqualToString:을 사용하고 있습니다 :

는 다음 원하는 문자열 비교.

+0

좋아, 네가 네가하는 말을 정확히 알 수있다.나는 배열과 함께 Plist를 사용할 때 코딩 차이를 파악하는 데 어려움을 겪었습니다. 사전 등등에 반대하는 것입니다. 나는 당신이 넣은 것을 시도해 봤지만 (그것은 합리적인 의미를가집니다), 여전히 '0'을 반환합니다. 내 PList의 소스 코드 스 니펫이 전혀 도움이 될까요? – MillerMedia

+0

더 유용한 것은 NSLog (@ "% @", [dealsArray objectAtIndex : indexPath.row]); – jrturton

+0

방금 ​​로그 아웃 한 내용을 위의 편집에서 추가했습니다. 이는 세 번째 행에 대한 올바른 정보입니다 (다른 두 행 역시 작동했습니다). 그것은 정보를 잡아서 어떤 행이 눌려 지는지 이해하지만 정수 값을 변경하지는 않습니다 ... – MillerMedia