2012-02-16 15 views
1

私はIOSプログラミングの初心者ですので、以下の問題で少し苦労します。私は問題を説明するために全力を尽くし、どんな助力も大変ありがとうございます。Xcodeのあるクラスの変数に別のクラスの変数をアクセスまたは操作するには

私は次のように作成しました:と呼ばれる2つのサブビューがある

  • 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がある(Viewは、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

ok;ここで私が達成しようとしていること、それを行うための最善の方法を教えてください。 私はタブビューを持っています、各タブは独自のxibファイルを持っています。タブの1つでは、一連の写真を表示したいと思います。ピクチャをクリックすると、クリックした画像の詳細が表示されます。 –

+0

ここで「正確に」という意味ですか? –

+0

私はあまりにもすぐに "リターン"に当たった。コメントを編集しました。もう一度ご覧ください。 –

関連する問題