以编程方式将文本字段值传递给另一个视图中的标签
Posted
技术标签:
【中文标题】以编程方式将文本字段值传递给另一个视图中的标签【英文标题】:Passing Textfield Value to Label in another view Programmatically 【发布时间】:2013-05-08 15:59:35 【问题描述】:我是 iphone 开发和 Xcode 的新手。 我很难运行一个简单的演示应用程序,以编程方式将我的文本字段文本从一个视图传递到另一个视图中的标签...... 而且我不知道我哪里出错了[甚至 NSLOG 也检查了即将到来的字符串...它说 Null :( ]
看看你们能不能帮我找到我缺少代码的地方? 提前致谢!
这是我做的事情:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UITextFieldDelegate>
NSString *str;
@property(nonatomic,retain)NSString *str;
@end
ViewController.m *
#import "ViewController.h"
#import "nextViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize str;
- (void)viewDidLoad
UITextField *txt =[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 200, 30)];
txt.borderStyle = UITextBorderStyleRoundedRect ;
txt.delegate=self;
[self.view addSubview:txt];
UIButton *btn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(80, 80, 200, 30);
[btn setTitle:@"Press" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btn:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
[super viewDidLoad];
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
self.str = [textField text];
return YES;
-(IBAction)btn:(id)sender
nextViewController *next =[[nextViewController alloc]init];
[self.navigationController pushViewController:next animated:YES];
nextViewController.h *
#import <UIKit/UIKit.h>
#import "ViewController.h"
@interface nextViewController : UIViewController
NSString *str;
@property(nonatomic,retain)NSString *str;
@end
nextViewController.m *
#import "nextViewController.h"
#import "ViewController.h"
@interface nextViewController ()
@end
@implementation nextViewController
@synthesize str;
- (void)viewDidLoad
UILabel *lbl = [[UILabel alloc]init];
lbl.frame=CGRectMake(40, 40, 200, 30);
ViewController *VC =[[ViewController alloc]init];
lbl.text=VC.str;`enter code here`
[self.view addSubview:lbl];
[super viewDidLoad];
【问题讨论】:
仅供参考:**HELP**
不能证明滥用xcode
标签的可怕罪行是正当的。
@H2CO3 哈哈哈......好吧......对不起,这是我关于堆栈溢出的第一个问题......现在不要在这里寻求帮助......和平兄弟:)
【参考方案1】:
您没有将nextViewController
的str
属性设置为您想要设置的字符串。
-(IBAction)btn:(id)sender
nextViewController *next =[[nextViewController alloc]init];
if (self.str)
next.str = self.str;
[self.navigationController pushViewController:next animated:YES];
此外,您正在创建一个新的 ViewController 实例,原因不明。只需使用以下内容将传递给 nextViewController 的字符串设置为标签:
lbl.text = self.str;
【讨论】:
滞后...怎么滞后?【参考方案2】:尝试像这样修改“btn”函数:
-(IBAction)btn:(id)sender
nextViewController *next =[[nextViewController alloc]init];
next.str = self.str; //<--- Add this.
[self.navigationController pushViewController:next animated:YES];
【讨论】:
是的尝试过...但是兄弟它也不工作...代码运行没有任何错误但下一个视图仍然空白...没有标签。【参考方案3】:你的错误在这里
- (void)viewDidLoad
UILabel *lbl = [[UILabel alloc]init];
lbl.frame=CGRectMake(40, 40, 200, 30);
ViewController *VC =[[ViewController alloc]init];
lbl.text=VC.str;`enter code here`
[self.view addSubview:lbl];
[super viewDidLoad];
您正在创建一个新的 ViewController 实例(因此 str 中没有有效值)。
您应该在此处将 str 从 viewcontroller 设置为 nextviewcontroller:
-(IBAction)btn:(id)sender
nextViewController *next =[[nextViewController alloc]init];
next.str = [textField text];
[self.navigationController pushViewController:next animated:YES];
并将 viewdidlog 从 nextviewcontroller 更改为
- (void)viewDidLoad
UILabel *lbl = [[UILabel alloc]init];
lbl.frame=CGRectMake(40, 40, 200, 30);
lbl.text=self.str;
[self.view addSubview:lbl];
[super viewDidLoad];
【讨论】:
试过你们提到的......仍然没有工作......我已经尝试过了......这就是我的问题。无法找出循环孔。 :'( 我改变了答案。只需尝试将 next.str 直接设置为 textfield.text 即可。并从@interface nextViewController 中删除 str : UIViewController NSString *str; 【参考方案4】:我发现此链接对您有帮助
http://pragmaticstudio.com/blog/2013/2/5/unwind-segues
【讨论】:
以上是关于以编程方式将文本字段值传递给另一个视图中的标签的主要内容,如果未能解决你的问题,请参考以下文章