0

AとBという2つのビューがあります。どちらもUIViewControllerクラスのサブクラスです。ビューAはテーブルビューではありませんが、iPhoneのサイズが320 * 460より大きいため、スクロール可能なビューです。ビュー B はスクロール ビューではありません。ビューAのいくつかのボタンをクリックしながら、ビューBを呼び出しています。

-(IBAction)bt:id(Sender)
    {
        B *mB=[[B alloc]initWithNib:@"B" bundle:nil];
        [self.view addSubView:mB.view];
    }

問題は、ビュー A が大きいため、B がビュー A の上にロードされると、ビュー A でさえビュー B に部分的に表示されることです。この問題を克服するために私を助けてください??

4

4 に答える 4

0

ビューBをメインビューに追加する前に、ビューAをスーパービューから削除します。

.hで2つのオブジェクトを取ります

ViewA * aObject; ViewB * bObject;

ビューDidLoadで、このようにビューAとビューBの2つのオブジェクトを作成します

aObject = [[ViewA alloc] initWithNibName:@ "ViewA" bundle:nil];

bObject = [[ViewB alloc] initWithNibName:@ "ViewB" bundle:nil];

[self.view addSubView:aObject.view];

ビューBを追加する場合は、このコードを追加します

[aObject.view removeFromSuperView];

[self.view addSubView:bObject.view];

同様に、戻るボタンアクションでは、次のようなコードを追加できます

[bObject.view removeFromSuperView];

[self.view addSubView:aObject.view];

アプリケーションでこのスニペットのコードを試してみてください。お役に立てば幸いです。以前のcalsの値が失われることはありません

于 2012-08-31T03:49:19.130 に答える
0

これを追加してみてください-(IBAction)bt:(id)Sender

ViewA.your_scroll_view.scrollEnabled=NO;

私がそれを正しく理解していれば、これはあなたがやりたかったことかもしれません。

于 2012-08-31T04:45:00.023 に答える
0

提案していただきありがとうございますが、私の問題に対する別の解決策を見つけました。

別のビュー、つまりスクロール ビュー A の上にビュー B を追加するときは、それに応じて A のスクロール ビューのサイズをリセットして、表示されないようにします。また、ビュー B で [戻る] ボタンを押すと、ビュー A のスクロール ビューのサイズを以前の値に再度設定します。また、ビュー B で [戻る] ボタンを押すと、ビュー A で定義され、ビュー B プロトコルの一部である関数を呼び出す必要があるため、ビュー A をビュー B のデリゲートにしました。

于 2012-09-02T15:41:10.217 に答える
0

問題は、ビュー B をビュー A サブビューに追加していて、ビュー A がスクロール ビューにあるため、Interface Builder で別の UIView アウトレットと UIView を作成する必要があることです。

次に、上で作成したビュー アウトレットにサブビューを追加します。問題が解決しない場合はお知らせください。

@interface ViewController A:UIViewController
@property(nonautomic,retain)IBOutlet UIView *smallViewB;

@implementation ViewController A
@synthesize smallViewB; //Make connection smallViewB in Interface Builder.

-(IBAction)bt:id(Sender) 
{ 
   B *mB=[[B alloc]initWithNib:@"B" bundle:nil];
   [self.smallViewB addSubView:mB.view];
}
于 2012-08-31T04:09:24.183 に答える