我有一个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的任何想法???
由于
答案 0 :(得分:1)
您的错误
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = self.userText;
这会创建selectFriendsViewController
的新实例,但是你不使用它。当方法完成时它将被释放。所以,你什么都没有。
如果您在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;
}
}
答案 1 :(得分:0)
我认为你无法导航并将值推送到下一个viewController 如果您使用xib文件,请使用此代码。
- (IBAction)next:(id)sender {
selectFriendsViewController *sfvc = [[selectFriendsViewController alloc] init];
sfvc.string = self.textField.text;
[self.navigationController pushViewController:sfvc animated:YES];
}
希望代码可以帮助您。
答案 2 :(得分:0)
如果您不想显示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 = @" ";
}
}