2016-07-22 30 views
0

ボタンクリックでサブビューを追加しようとしています。しかし、ボタンをクリックすると、ビューは表示されません。ここでiOS addSubviewビューが表示されない

は、ボタンのクリックのために非常に単純にコードです:

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

myHelloWorldViewControllerはHelloWorldViewControllerクラスのインスタンスです。

HelloWorldViewController.h:

#import <UIKit/UIKit.h> 

@interface HelloWorldViewController : UIViewController 

-(IBAction)showMessage; 

@end 

とHelloWorldViewController.m:

#import <Foundation/Foundation.h> 
#import "HelloWorldViewController.h" 

@implementation HelloWorldViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 


    if (self) { 
     // Custom initialization 

    } 
    return self; 
} 

- (void)dealloc 
{ 
    [super dealloc]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

-(IBAction)showMessage 
{ 
    UIAlertView *hellowWorldAlert = [[UIAlertView alloc] initWithTitle:@"My First App" message:@"Hello, World!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
    [hellowWorldAlert show]; 
} 

@end 

私が表示したいビュー HelloWorldViewController.xib

あるobjective-の間に必要ないくつかの追加のリンクがありますCコードと.xibファイルを同じ名前にする以外にも、私の2っの問題から明らかなように、私はiOSにはとても新しいので、どんなアドバイスも大歓迎です。私が残した重要な情報があれば教えてください。

答えて

1

別のUIViewControllerからのビューをメインビューコントローラに埋め込みたい場合は、そのビューのコントロールのいくつかをメインビューコントローラに正しく転送するためのプロセスが少しあります。あなたはより多くのチュートリアルスタイルのウォークスルーを好む場合はこれは、あなたがあなたをtry this one

+0

感謝することができ、these Apple docs

に詳細に記載されています!これらのリソースは非常に有用であり、必要な情報を確実に持っています。 –

0

あなたはinit myHelloWorldViewControllerを持っていましたか?

myHelloWorldViewController = [[HelloWorldViewController alloc] init]; 
0

この行には問題がある:

[self addSubview:myHelloWorldViewController.view]; 

まず、あなたがmyHelloWorldViewControllerという変数を参照しています。しかし、それは何ですか、そしてその価値をどのように得ましたか?あなたはそれを示していないので、でもであると信じる理由はありませんHelloWorldViewController。

第2に、あなたがしていることは間違っています。ダンプスターダイビングをnibファイルに入れてビューを抜く方法としてのみ、ビューコントローラを作成してはいけません。あなたはペン先から自由にビューをロードできますが、このようにはできません。あなたのビュー内に別のビューコントローラのビューを置くのは、それを行う方法(ビューコントローラの子として他のビューコントローラを正式に設定する必要があります)に関する非常に厳しいルールがあります。

0

ここで別のViewControllerを使用していますので、まずそれを初期化してからそれを提示する必要があります。

SampleViewController *new = [[SampleViewController alloc]initWithNibNam:@"SampleViewController" bundle:nil]; 
[self presentViewController:new animated:Yes completion:nil]; 

単純なビューを同じViewControllerで使用している場合は、addsubView関数を使用して現在のビューに単純に追加できます。

関連する問題