NSString 总是传递 NULL iOS
NSString always passing NULL iOS
我有一个 quiz.vc,我正在将一个 NSString 从 vc 传递给另一个,它传递 null。 (我正在使用 UITextView)
Quiz.h
@property (nonatomic,strong) IBOutlet UITextView *textField;
@property (nonatomic, retain) NSString *userText;
Quiz.m
- (IBAction)next:(id)sender {
// i have tried NSString *userText also and passing in userText to sfvc.string
self.userText = self.textField.text;
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = self.userText;
}
selectFriendsViewController.h
@property (nonatomic, strong) NSString *string;
selectFriendsViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%@", _string);
}
它总是在运行时记录 null?我尝试了很多方法和方法!
关于如何传递字符串而不是 null 的任何想法???
谢谢
你的错误
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = self.userText;
这会创建一个 selectFriendsViewController
的新实例,但是您不使用 it.It 将在方法为 done.So 时被释放,您一无所获。
如果在 IBAction
中触发 segue,请使用 prepareForSegue
传递数据。
编辑,
如果您在单击按钮时触发 segue。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.destinationViewController isKindOfClass:[selectFriendsViewController class]]) {
selectFriendsViewController * dvc = (selectFriendsViewController*)segue.destinationViewController;
dvc.string = self.textField.text;
}
}
我认为你无法导航并将值推送到下一个 viewController
如果您使用 xib 文件,请使用此代码。
- (IBAction)next:(id)sender {
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = self.textField.text;
[self.navigationController pushViewController:sfvc animated:YES];
}
希望代码对您有所帮助。
如果不想显示null,使用下面的代码
#pragma mark - check string is empty or not
- (IBAction)next:(id)sender
{
self.userText = self.textField.text;
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = [self checkEmpty:self.userText];
}
- (void)checkEmpty:(NSString *)check
{
@try
{
if (check.length==0)
check = @" ";
if([check isEqual:[NSNull null]])
check = @" ";
}
@catch (NSException *exception)
{
check = @" ";
}
}
我有一个 quiz.vc,我正在将一个 NSString 从 vc 传递给另一个,它传递 null。 (我正在使用 UITextView)
Quiz.h
@property (nonatomic,strong) IBOutlet UITextView *textField;
@property (nonatomic, retain) NSString *userText;
Quiz.m
- (IBAction)next:(id)sender {
// i have tried NSString *userText also and passing in userText to sfvc.string
self.userText = self.textField.text;
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = self.userText;
}
selectFriendsViewController.h
@property (nonatomic, strong) NSString *string;
selectFriendsViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%@", _string);
}
它总是在运行时记录 null?我尝试了很多方法和方法! 关于如何传递字符串而不是 null 的任何想法???
谢谢
你的错误
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = self.userText;
这会创建一个 selectFriendsViewController
的新实例,但是您不使用 it.It 将在方法为 done.So 时被释放,您一无所获。
如果在 IBAction
中触发 segue,请使用 prepareForSegue
传递数据。
编辑, 如果您在单击按钮时触发 segue。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.destinationViewController isKindOfClass:[selectFriendsViewController class]]) {
selectFriendsViewController * dvc = (selectFriendsViewController*)segue.destinationViewController;
dvc.string = self.textField.text;
}
}
我认为你无法导航并将值推送到下一个 viewController 如果您使用 xib 文件,请使用此代码。
- (IBAction)next:(id)sender {
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = self.textField.text;
[self.navigationController pushViewController:sfvc animated:YES];
}
希望代码对您有所帮助。
如果不想显示null,使用下面的代码
#pragma mark - check string is empty or not
- (IBAction)next:(id)sender
{
self.userText = self.textField.text;
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = [self checkEmpty:self.userText];
}
- (void)checkEmpty:(NSString *)check
{
@try
{
if (check.length==0)
check = @" ";
if([check isEqual:[NSNull null]])
check = @" ";
}
@catch (NSException *exception)
{
check = @" ";
}
}