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 = @" ";
     }
   }