0

2つのビューがあり、最初のビューから取得したテキストを別のビューに表示しようとしていますUITextField。-(ソース)で示される2番目のビュー。したがって、メソッドViewWillAppearおよびViewDidLoadは機能しません。また、アプリ起動時に2番目のビューのviewDidLoadメソッドが実行されます。

二等式のメソッドを作ってみました

secondClass.h:

@property (strong, nonatomic) IBOutlet UITextField *itemName;//all hooked up in storyboard
-(void)SetName:(NSString *)name;

secondClass.m:

-(void)SetName:(NSString *)name{
    NSLog(@"%@",name);
    itemName.text = name;//itemName - textField
}

そして最初のものでそれを使用します:

secondViewConroller *secondView = [[secondViewConroller alloc]init];
[secondView SetName:@"Bill"];

NSlog「請求書」を表示しますが、textField.text何も変更されません。

私の推測では、アプリはviewDidLoadメソッドから取得した2番目のビューを表示し、何らかの方法で更新する必要があるため、変更なしでUITextFieldを表示します

私の質問:異なるクラスのUI要素の属性を変更するための最良のアプローチは何ですか?

4

4 に答える 4

0

だから私は解決策を見つけました:私が最初から取得したパラメータでメソッドSetNameを呼び出すことに何か問題がありましたUIViewController

基本的に解決策は次のとおりです。NSObject最初から値を作成してそこに入れ、UIViewConroller次にそれを使用します。

このチュートリアルは、問題を解決するのに役立ちました。

于 2013-02-17T17:29:05.040 に答える
0

最も簡単な方法:

secondViewConroller.h:

@property NSString * conversationName;

secondViewConroller.m:

@synthesize conversationName;

-(void)SetName:(NSString *)name{
    NSLog(@"%@",name);
    itemName.text = conversationName
}

割り当て時:

secondViewConroller *secondView = [[secondViewConroller alloc]init];
conversationName = @"Set this text";
[secondView SetName:@"Bill"];

その後、プロトコルについて読むことをお勧めします。

于 2013-02-13T00:53:55.547 に答える
0

最も簡単な方法:secondViewConroller.hで:

@property (nonatomic, retain) NSString *stringName;

secondViewConroller.m:

@synthesize stringName;

そしてviewDidLoadメソッドでこの行を書きます

itemName.text = stringName

割り当て時:

secondViewConroller *secondView = [[secondViewConroller alloc]init];
secondView.stringName = @"Set this text";
于 2013-02-13T08:02:33.933 に答える
0

itemName変数がnslogに到達しているように見える場合は、何か問題があると思います。テキストフィールドのインターフェイスビルダーで参照アウトレットを作成しましたか?それ以外の場合は、タグごとに適切なテキストフィールドを取得できます。IBでは、たとえばタグ1をテキストフィールドに配置し、コードで実行します。

UITextField *tf=(UITextField*)[self.view viewWithTag:1];
tf.text=name;

(メインビューに直接ない場合は、テキストフィールドを保持しているビューのself.viewを置き換えます)

于 2013-02-13T15:16:54.237 に答える