0

我有两个视图,我正在尝试显示我从UITextField另一个视图的第一个视图中获得的文本。- ( source ) 显示的第二个视图,因此方法 ViewWillAppear 和 ViewDidLoad 将不起作用。第二个视图的 viewDidLoad 方法在应用程序启动时运行。

我试图制作第二类的方法

第二类.h:

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

第二类.m:

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

并在第一个中使用它:

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

NSlog显示“Bill”,但textField.text不会改变任何东西。

我猜该应用程序显示 UITextField 没有更改,因为它显示了从 viewDidLoad 方法获取的第二个视图,我需要以某种方式更新它

我的问题:从不同类更改 UI 元素属性的最佳方法是什么?

4

4 回答 4

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

如果您的 itemName 变量似乎进入 nslog,则猜测它有问题。您是否在界面构建器中为文本字段创建了一个引用出口?否则,您可以通过标签获得正确的文本字段,在 IB 中将例如标签 1 放在文本字段上并在代码中执行:

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

(如果不是直接在主视图中,请将 self.view 替换为保存文本字段的视图)

于 2013-02-13T15:16:54.237 回答
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

所以我找到了一个解决方案:调用方法 SetName 有问题:使用我从 first 获取的参数UIViewController

基本上解决方案是:NSObject首先创建并输入价值UIViewConroller,然后再使用它。

这个教程帮助我解决了这个问题。

于 2013-02-17T17:29:05.040 回答