2011-03-24 6 views
0

캐스팅 된 컨트롤러에서 필드 및 단추 이미지를 설정하려고합니다. 제목 필드와 세부 정보 텍스트 필드를 성공적으로 변경할 수 있지만 버튼은 전혀 변경되지 않습니다. 캐스팅 된 컨트롤러에서 UIButon 이미지를 변경하는 방법

- (void)prepareController:(MLSViewController *)controller forRow:(NSUInteger)row { 
    AdvancedTableItem *item = [self.tableItems objectAtIndex:row]; 
    EditLocationViewController *castedController = (EditLocationViewController *)controller; 
    castedController.titleText = item.text; 
    castedController.detailsText = item.details; 
    castedController.isDefaultLocation = (defaultItem == item); 
    [castedController.iconButton setImage:[UIImage imageNamed:item.icon] forState:UIControlStateNormal ]; 
} 

나는 item.icon 올바르게 주조 컨트롤러의 버튼을 setImage를 호출하기 전에 채워진하고 정확했다 있는지 확인하기 위해 테스트를했다.

간단히 말해서이 코드는 titleText 및 detailsText 변경에는 적합하지만 버튼 이미지에는 적합하지 않습니다.

단서가 있습니까?

답변

1

잘못되었을 수있는 몇 가지 사항이 있습니다.

  1. 사전에 이미지를 만들고이를
  2. (나는 함께 IBOutlet 가정)을 iconButton는
  3. 이 메소드가 호출되어 있는지 확인합니다 연결되어 있는지 확인합니다로드되어 있는지 확인 : 나는 다음을 수행 할 것 보기가 표시되고 나면 IBOutlet은 설정되지 않지만 그렇지 않으면 제목이 나타나지 않는다고 가정합니다.

이것은 내가 당신의 방법에서하는 것입니다 :

- (void)prepareController:(MLSViewController *)controller forRow:(NSUInteger)row { 
    AdvancedTableItem *item = [self.tableItems objectAtIndex:row]; 
    NSLog(@"Item from table: %@", item); 
    EditLocationViewController *castedController = (EditLocationViewController *)controller; 
    NSLog(@"Controller: %@", castedController); 
    castedController.titleText = item.text; 
    castedController.detailsText = item.details; 
    castedController.isDefaultLocation = (defaultItem == item); 
    NSLog(@"Icon Name: %@", item.icon); 
    UIImage *icon = [UIImage imageNamed:item.icon]; 
    NSLog(@"Icon Image: %@, icon button on controller: %@", castedController.iconButton); 
    [castedController.iconButton setImage:icon forState:UIControlStateNormal ]; 
} 

하는 모든 값이 NIL (특히 아이콘과 iconButton)하지 있는지 확인하십시오.

iPhone/iOS에서 문제를 다룰 때 NSLog는 친구이며 중첩 된 호출은 적입니다. 변수가 NIL이라고해서 앱이 그것에 대해 불평 할 것이라는 의미는 아닙니다. 그것은 그것을 무시할 수도 있습니다.

관련 문제