2012-02-16 1 views
1

나는 IOS 프로그래밍의 초보자이므로 아래 문제로 조금 어려움을 겪고 있습니다. 문제를 설명하기 위해 최선을 다할 것이며 모든 도움을 주시면 감사하겠습니다.Xcode에서 한 클래스의 변수를 다른 클래스에서 액세스하거나 조작하는 방법

나는이 만들어 다음과 같습니다

  • AboutViewController (.H,하는 .m 및 .xib)라는 두 개의 파단이있는 - MAINVIEW, InfoView를합니다. mainView 및 infoView 인터페이스는 XIB 파일에 작성됩니다. 다음과 같이

    @interface TestView : UIView { 
    
        IBOutlet UIView *mainView; 
    IBOutlet UIView *infoView; 
    
        UILabel *lbltitle; 
        UIImageView *imgIcon; 
    IBOutlet UITextView *txtInfo1; 
        IBOutlet UITextView *txtInfo2; 
    IBOutlet UITextView *txtInfo3; 
    
    
    
    } 
    
    @property (nonatomic, retain) IBOutlet UILabel *lbltitle; 
    @property (nonatomic, retain) IBOutlet UIImageView *imgIcon; 
    

    TestView.m은 다음과 같습니다 :

  • 그리고 TestView는 다음과 같이

TestView.h은 (보기 MAINVIEW 및 InfoView의 간을 전환, 시작에 대처하기 위해)

#import "TestView.h" 

#import <QuartzCore/QuartzCore.h> 

@implementation TestView 
@synthesize lbltitle, imgIcon; 

-(void)awakeFromNib 
{ 
[self addSubview:mainView]; 
} 

세로 모드에서는보기가 잘 작동하지만 가로 모드에서는보기가 모두 좀 망 쳤어. 나는 XIB를 사용하려고 노력했지만 당신이 그렇게 많이 할 수 있기 때문에 이것을 프로그래밍 방식으로 결정했다.

AboutViewController.m에서 willAnimateRotationToInterfaceOrientation 메서드를 재정의하고 방향을 기반으로 개체를 배치하려고합니다. 중단 점을 넣으면 코드가 UI로 변환되지 않는다는 것, 즉 UI가 변경되지 않는다는 것을 제외하고는 코드가 호출되는 것을 볼 수 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까 ? 내가 다른 방식으로 접근해야 하는가? 어떤 제안이나 안내도 크게 환영합니다.

- (void)willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 

    TestView *t = [[TestView alloc]init]; 

if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
    toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) 
    { 
     [t.imgIcon setFrame:CGRectMake(10,74,165,190)]; 
     [t.lbltitle setFrame:CGRectMake(20, 10, 387, 21)]; 
    } 
else 
    { 
     [t.imgIcon setFrame:CGRectMake(10,74,165,190)]; 
     [t.lbltitle setFrame:CGRectMake(189, 10, 387, 21)]; 

    } 
} 

답변

0

잘 특별한 문제는 당신이 당신이 어디보기를 표시하지 않습니다

TestView *t = [[TestView alloc]init]; 

사용하여 만든 뷰를 조작이다, 그래서 메모리에 앉아있다. 당신이하지 않아야 더 일반적인 관점에서

[parentview addSubview:t]; 

:

적절한 부모를 찾아 수행 당신은 당신이 먼저보기를 표시해야합니다, 당신이 원하는 모든 변경 사항을 적용 할 수 있지만, 그것들을 볼 수 있도록 회전 처리 코드에서 개의 새 뷰를 생성합니다.

+0

확인; 여기에 내가 달성하려고 노력하고있다, 제발 나를 뭐라구 최선의 방법으로 그것을 안내하십시오. 나는 탭뷰를 가지고 있으며, 각 탭에는 자체 xib 파일이 있습니다. 탭 중 하나에서 일련의 사진을 보여주고 싶습니다. 사진을 클릭하면보기를 클릭 한 사진에 대한 세부 정보와 함께 다른 사진으로 전환하고 싶습니다. –

+0

그리고 '여기'는 정확히 어디에서 의미합니까? –

+0

나는 "return"을 너무 빨리 쳤다. 의견을 수정했습니다. 다른 모습을보실 수 있습니까? –

관련 문제