私のアプリケーションには、UITextFieldとUIButtonを持つViewController(ViewController 1)があります。ViewController 2には、UINavigationBarがあります。ViewController 1テキストフィールドに何かを入力し、ボタンを押してから、ViewController2のUINavigationBarテキストをViewController1のUITextFieldとして設定できるようにしたいのですが、もちろん、Xcodeでは別のViewControllerからのオブジェクトを宣言できません。より多くの仕事をしています。これどうやってするの?
3 に答える
これはテストしていませんが、次のように機能するはずです。
navBar.topItem.title = @"title";
また
self.navigationItem.title=@"title";
@ "title"は、ナビゲーションコントローラスタックでVC2をプッシュする前に設定された文字列変数(VC2内)に置き換えられます。
乾杯
あなたの質問はあまり明確ではありませんが、私が理解できることから、あなたはViewController
'sに秒のタイトルUIButton
を設定したいですか?NavigationBar
ViewController
私にはかなり奇妙な振る舞いのように思えますが、これがあなたを助けるかもしれないと私が思うものです。
最初ViewController
にプロトコル/デリゲート機能を作成して、UIButton
が押されたときに次を呼び出すことができるようにします。
-(IBAction) changeTitle:(id) sender {
[self.delegate buttonPressed:txtView.text];
}
そして、それであなたUITextField
のテキストをあなたAppDelegate
、またはこれら2つを作成した人ViewControllers
に送信すると、そこであなたはそのテキストを受け取り、それをあなたの2番目に送信しますViewController
。
-(void)buttonPressed:(NSString *)text{
secondViewController.title = text;
}
おそらく、ViewController
その行が機能しない場合は、2番目のタイトルを変更するメソッドを実装する必要があります。これがあなたにとって有用であり、私があなたの質問を理解したことを願っています。
Oscarの回答に似ていますが、これが複数のView Controllerにアクセスを許可する文字列である場合は、アプリデリゲートにプロパティを設定できます。
In AppDelegate
@property (NSString *) myString;
In View Controller setting
myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.myString = @"meh";
In View Controller getting
myAppDelegate *appDelegate= (myAppDelegate *)[[UIApplication sharedApplication] delegate];
NSString *mehStr = appDelegate.myString;
それは完全なコードではありませんが、あなたはその考えを理解します。船外に出て、物をappdelegateに送り返すかどうかはわかりませんが、1つの文字列では問題なく動作するはずです。