NSString总是传递NULL iOS

时间:2015-07-28 13:24:35

标签: ios objective-c null nsstring viewcontroller

我有一个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的任何想法???

由于

3 个答案:

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