XIB 파일에 UIImageView가있는 MyViewController라는 UIViewController 클래스를 만들었습니다. 그런 다음이 클래스를 다른 클래스로 가져옵니다. 클래스의 인스턴스를 만들고 코드를 사용하여 UIImageView에서 이미지를 변경합니다.Cocoa Touch에서 변수 할당을 통해 클래스 계층 구조를 탐색하는 방법은 무엇입니까?
이것은 원활하게 작동합니다. 내 응용 프로그램은 본질적으로 이미지 뷰어입니다. 하위 뷰에 이미지를 미리로드하여 다음 및 이전 이미지를 캐싱하려고했습니다. 나는이 같은 변수에 myViewController 배치 할 때 :
UIViewController *pager = myViewController;
그리고이 같은 UIImageView에 이미지를 설정하는 변수를 사용하려고 :
pager.myImageView.image = [UIImage imageNamed:@"myImage.png"];
나는 "오류 : 멤버에 대한 요청을 ' myImageView가 '구조체 또는 공용체가 아닌 무언가'에 있습니다. 나는 대괄호를 사용하여 그 일을 시도했습니다
[[[pager myImageView] setImage:[UIImage imageNamed:@"myImage.png"]];
내가 '경고'의 UIViewController는 '-myImageView'에 응답하지 않을 수 있습니다 "얻는다. myImageView로 이동하기 위해 계층 구조에 액세스하려면 어떻게해야합니까? 헤더와 @import에 @class를 사용했고 클래스 인스턴스를 합성했습니다. 내가 지금까지 가지고있는 유일한 해결책은이 작업을 수행하여, 해킹 : 변수 내가 가지고있는 UIViewController 변수에 대한 UIImageView에 변수에 대한 하나 하나의 양을 두 배로
UIImageView *pager = myViewController.myImageView;
pager.image = [UIImage imageNamed:@"myImage.png"];
. 도움을 줄 수있는 사람에게 미리 감사드립니다.
시간을내어 주신 eJames에게 감사의 말씀을 전하러 주신 것에 대해 감사드립니다.내 초기 문제는 위와 동일한 클래스에 대한 포인터를 보유하기 위해 배열을 사용하는 것이 었습니다. 클래스에 도달하기 위해 [myArray objectAtIndex : 0]을 사용하여 배열에 액세스하면 위와 같은 원하지 않는 결과가 나타납니다. 내 문제에 대한 해결책을 알고 있니? 나는 클래스 포인터를 배열에 집어 넣기 위해 클래스 생성자를 지정할 수 없다. 다시 한 번 감사드립니다! –
배열에서 개체를 가져 오려면 MyViewController *를 사용해야합니다. MyViewController * item = [myArray objectAtIndex : 0]; item.myImageView.image = ... –
또는 ((MyViewController *) [myArray objectAtIndex : 0]). myImageView.image = ... –