2011-01-03 18 views
1

同じクラスファイル(.hと.m)を共有しているビューが2つあります。最初のビューでは、項目のリストとボタンのあるUIPickerがあります。ユーザーがボタンをクリックすると、2番目のビューが(UIPickerで選択された項目に基づいて)適切なピクチャを表示するようにします。あるビューから別のビューにNSStringを渡す

私の考えは、選択した項目に基づいて最初のビューにNSStringを設定することでした。次に、ユーザーがボタンをクリックして2番目のビューを画面に押し込むと、新しいビューでその文字列を渡すことができます。私はしばらくの間、 "グーグル"してきたが、私はそれの周りに自分の指をラップするように見えることはできません。重要な場合は、ナビゲーションコントローラを使用しています。ここではボタンのクリックで実行されるコードは次のとおりです。

-(IBAction) viewPictures{ 
    ViewControllerClass *sView = [[ViewControllerClass alloc] initWithNibName:@"ViewController2XIB" bundle:nil]; 
    [self.navigationController pushViewController:sView animated:YES]; 
} 

答えて

5

あなたはViewControllerClassにNSStringの*プロパティを追加し、(これが最も簡単でしょう)、それを初期化した後、それを設定するか、またはあなたを作成することができますすることができますいずれか独自のinitメソッドで文字列を受け取り、そこに設定します。

オプション1:

(自分の.mファイルで次に)(あなたの.hファイル内の場所にこれを)

@interface ViewControllerClass : UIViewController { 
    NSString *someString; 
} 

@property (nonatomic, copy) NSString *someString; 

@end 

@implementation ViewControllerClass 
@synthesize someString; 
@end 

の上からあなたのコードを変更これは:

-(IBAction) viewPictures{ 
    ViewControllerClass *sView = [[ViewControllerClass alloc] initWithNibName:@"ViewController2XIB" bundle:nil]; 
    sView.someString = @"Whatever String you want"; 
    [self.navigationController pushViewController:sView animated:YES]; 
} 

オプション2:

(あなたの.hファイル内の場所にこれを)

@interface ViewControllerClass : UIViewController { 
    NSString *someString; 
} 

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle someString:(NSString *)SomeString; 

@end 

(その後、あなたの.mファイル内)

@implementation ViewControllerClass 

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle someString:(NSString *)SomeString 
{ 
    if(self = [super initWithNibName:nibName bundle:nibBundle]) { 
    someString = [SomeString copy]; 
    } 
    return self; 
} 

@end 

これまで以上からあなたのコードを変更:

-(IBAction) viewPictures{ 
    ViewControllerClass *sView = [[ViewControllerClass alloc] initWithNibName:@"ViewController2XIB" bundle:nil someString:@"Whatever String you want"]; 
    [self.navigationController pushViewController:sView animated:YES]; 
} 
+0

.hファイルでは、次を追加しますか?NSString * string1; @property(nonatomic、retain)NSString * string1を追加します。私はそれを試みたが、うまくいかなかった。私は、最初のビューが閉じられ、2番目のビューが読み込まれると、割り当てが解除されると思います。コードスニペットを表示することができれば、私はそれを感謝します。私は一般的なプログラミングにあまり経験はありません。返信いただきありがとうございます。 – Brian

+0

要求されたコードサンプルを追加しました。 – theChrisKent

+0

ありがとう。私はIBActionメソッドで設定するのを忘れていました。助けてくれてありがとう。 – Brian

1

そのsharにNSStringを入れるこれらの2つのビューは、クリスが言ったように。 ボタンに応答するメソッドでは、クリックしてuipickerからの文字列を作成したNSStringに渡してから、ビュー2に渡します。

関連する問題