0

IBActionは何もしません。「戻る」をコンソールに記録して、接続に問題がないようにします。self.topViewは、IBActionが呼び出されても何もしません

-(IBAction)loadSettingsView:(id)sender;

{

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        [[NSBundle mainBundle] loadNibNamed:@"settingsView_iphone" owner:self options:nil]; 
    } else {
        [[NSBundle mainBundle] loadNibNamed:@"settingsView_ipad" owner:self options:nil];
    }
    [self.view addSubview:topView];
}

-(IBAction)loadMainView:(id)sender;
{
    [topView removeFromSuperview];
    NSLog(@"back");

}
4

2 に答える 2

3

ここであまり多くの仮定を立てていないことを願っていますが、これで問題は解決するはずです。私はtopView現在のクラスのメンバーであると仮定しています:

-(IBAction)loadSettingsView:(id)sender;

{

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        topView = [[[NSBundle mainBundle] loadNibNamed:@"settingsView_iphone" owner:self options:nil] objectAtIndex:0]; 
    } else {
        topView = [[[NSBundle mainBundle] loadNibNamed:@"settingsView_ipad" owner:self options:nil] objectAtIndex:0];
    }
    [self.view addSubview:topView];
}

-(IBAction)loadMainView:(id)sender;
{
    [topView removeFromSuperview];
    NSLog(@"back");

}

基本的に、loadNibNamed使用しているメソッドは、nib のすべてのトップレベル ビューを含む配列を返します。topViewこれらのビューへの参照が必要な場合 (ここでは nib にビューが 1 つあると想定しています)、実際に変数を割り当てる必要があります。現在topViewはおそらく nil であるため、removeFromSuperview呼び出しは何もしていません。

于 2012-06-12T19:34:28.347 に答える
0

はるかに簡単なソリューションに資金を提供してください。メイン ビューの nib に新しいビューを作成し、それに IBOutlet をアタッチするだけです。夢のように機能します。

-(IBAction)loadSettingsView:(id)sender;
{
        [self.view addSubview:settingsView];
}

-(IBAction)loadMainView:(id)sender;
{
    [settingsView removeFromSuperview];
}
于 2012-06-12T21:02:11.010 に答える