0

ビューを削除できません。addsubview メソッドを使用してビューを追加していますが、使用するとRemoveFromSuperView.

// ここでは、ログイン ボタンからビューを追加しています

medicalViewObject=[[MedicalInfoViewController alloc] initWithNibName:@"MedicalInfoViewController" bundle:nil];
    [self.view addSubview:medicalViewObject.view];

//ここでは別のViewControllerにRemoveFromSuperViewを書いています

-(void)BackToMainView
{
    [self.view removeFromSuperview];
}
4

2 に答える 2

2

removeFromSuperview を間違ったビュー オブジェクトに送信しているため、機能していません。これはあなたが必要とするものです:

[medicalViewObject.view removeFromSuperview];

編集:

あなたの質問は、ビューがあることを示唆しています (このビューの名前を質問に含めていないため、単に MainView と呼びます)。次に、medicalViewObject というサブビューを MainView に追加します。removeFromSuperview 関数を実行するメソッド呼び出し "BackToMainView" もあります。あなたの質問は、medicalViewObject の一部のユーザー アクション (ボタンの押下など) が「BackToMainView」メソッドを呼び出すことになっていることを示唆しています。

これがすべて正しい場合、上記の私の答えは正しいです。しかし、あなたのコメントに基づいて、medicalViewObject にデリゲート プロトコルを実装し、「MainView」にプロトコルを採用させる必要があるようです。

medicalViewObject のデリゲートの宣言では、次のようなメソッド呼び出しが必要です。

-(void)backButtonWasPressed;

MainView の実装では、次のようになります。

-(void)backButtonWasPressed
{
    [medicalViewObject.view removeFromSuperview];
}

したがって、medicalViewObject で使用しているユーザー アクションが何であれ、メイン ビュー (ボタンまたはその他のオブジェクト) に戻るには、以下を呼び出す必要があります。

[delegate backButtonWasPressed];

状況によっては少し異なるように見えるかもしれませんが、これはあなたがやろうとしていることを達成するためのかなり一般的な方法です. これが役立つことを願っています。

于 2011-08-22T14:07:56.233 に答える
1

あなたが呼び出す[self.view removeFromSuperview];ときは、自分がいるView Controllerに自分のビューを削除するように伝えています。まったく同じ MedicalInfoViewController 内からその行を呼び出すか、外部から medicalViewObject にそのビューを削除するように指示する必要があります[medicalViewObject.view removeFromSuperview];

于 2011-08-22T14:07:17.923 に答える