0

以前にも同様の質問があったことは承知していますが、私は Objective C にまったく慣れていない (C について十分な知識がある) ので、ご容赦ください。

私の場合、2 つのウィンドウを持つタブ バー コントローラーがあります。「秒」でボタンを押すと、変数が変更されますchangeNamechangeName「最初の」View Controllerでの値を使用したいのですが、いくつかの問題に遭遇しました:

他のviewcontrollerに到達するために、SOからこれを見つけました(残念ながら場所を忘れました):

-(NSString *)newName{

// Create a UIStoryboard object of "MainStoryBoard_iPhone" named storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:(NSString *)@"MainStoryBoard_iPhone" bundle:(NSBundle *)nil];

// Create a UIViewController object of the wanted element from MainStoryBoard_iPhone
UIViewController *secondview = [storyboard instantiateViewControllerWithIdentifier:(NSString *)@"secondBoard"];

return secondview.changeName;
}

私が最初に持っているもの。MainStoryBoard_iPhone.xib/storyboard-file の名前です。

しかし、いいえ。エラーは言う

Property 'changeName' not found on object of type 'UIViewController *'

私のsecond.hには

 @property (readwrite, retain) NSString *changeName;

そしてsecond.mで

 @synthesize changeName;

すべての助けに感謝しますが、私が OOP を使用したのは 2 日間だけであることを覚えておいてください。よろしくお願いします

編集:そして、ここにどのような入力が必要ですか?

 - (void)viewDidLoad
{
[super viewDidLoad];
mylabel.text = Name; // or [mylabel.text Name] or something? 
}
4

2 に答える 2

5

返されたビュー コントローラーをカスタマイズした 2 番目のビュー コントローラーにキャストする必要があります ( にUIViewControllerはプロパティがないためchangeName)。

したがって、次のようにします。

// Create a UIViewController object of the wanted element from MainStoryBoard_iPhone
SecondViewController *secondview = (SecondViewController *)[storyboard instantiateViewControllerWithIdentifier:(NSString *)@"secondBoard"]; 

SecondViewController は、2 番目のコントローラーの名前だと思います。

于 2012-06-08T08:27:13.177 に答える
0

In my case I wanted to pass a string from FirstViewController to set a text field in SecondViewController, so:

1- In SecondViewController.h

@property (strong, nonatomic) IBOutlet UITextField *someTextField;// this is linked to a UITextField

2- In FirstViewController.m:

#import "SecondViewController.h"

3- I will do this after a press of a button in the FirstViewController:

SecondViewController *SecondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

//set fields values

    SecondView.someTextField.text = @"HeLLO from First";


UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: SecondView];                  

//show AdView

   [self.navigationController presentViewController:nav animated:YES completion:nil];

4- This is it!

5- There is a case, if I'm in FirstViewController and wanted to set a string property in the SecondViewController with the same way, the string won't get the value till you press a some kinda button in SecondViewController, it won't get it like in viewDidLoad for example! don't know why.

于 2014-07-03T16:48:59.880 に答える