我有两个观点,我正在尝试显示我从另一个UITextField
的第一个视图中获得的文字。第二个视图显示为 - (source)所以方法ViewWillAppear和ViewDidLoad不起作用。并且在启动应用程序时运行第二个视图的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
不会改变任何内容。
我的猜测应用程序显示UITextField没有更改,因为它显示了从viewDidLoad方法获取的第二个视图,我需要以某种方式更新它
我的问题:更改不同类别的UI元素属性的最佳方法是什么?
答案 0 :(得分: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"];
我建议你在此之后阅读有关协议的内容。
答案 1 :(得分: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";
答案 2 :(得分:0)
如果你的itemName变量似乎到达了nslog,那么你可能会出现问题。 你是否在文本域的界面构建器中创建了一个引用插座? 否则你可以通过标签获得正确的文本字段,在IB中放置文本字段上的标签1并在代码中执行:
UITextField *tf=(UITextField*)[self.view viewWithTag:1];
tf.text=name;
(如果没有直接在主视图中,则将self.view替换为包含文本字段的视图)
答案 3 :(得分:0)
所以我找到了一个解决方案:调用方法SetName有问题:我从第一个UIViewController
获取参数。
基本上解决方案是:创建NSObject
并从第一个UIViewConroller
输入值,然后在第二个中使用它。
这TUTORIAL帮助我解决了这个问题。