如何使用segue在uitextview中传递值

时间:2015-09-21 05:15:18

标签: ios objective-c

我正在尝试在UITextView中创建一些东西,每次文本遇到这种符号“@”。该符号后面的所有文本都将发送给其他控制器。

这是我的代码

- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    // "Length of existing text" - "Length of replaced text" + "Length of replacement text"
    NSInteger newTextLength = [self.addingText.text length] - range.length + [text length];

    if([text isEqualToString:@"@"] || secondString){
        secondString = true;

        NSString * stringToRange = [self.addingText.text substringWithRange:NSMakeRange(0,range.location)];

        // Appending the currently typed charactor
        stringToRange = [stringToRange stringByAppendingString:text];

        // Processing the last typed word
        NSArray *wordArray       = [stringToRange componentsSeparatedByString:@"@"];
        self.getSecondString    = [wordArray lastObject];

        // wordTyped will give you the last typed object
        NSLog(@"\nWordTyped :  %@",self.getSecondString);

    }

    if (newTextLength > 50) {
        // don't allow change
         [aTextView resignFirstResponder];
        return NO;
    }
    self.countChar.text = [NSString stringWithFormat:@"%li", (long)newTextLength];

    return YES;
}

我从here获得了该代码。当我使用NSLog时,它是完美的工作,但我点击按钮使用segue将其发送到其他控制器。它总是显示Null值。希望你的帮助在这里。提前致谢

这是我的按钮代码

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

     CameraViewController * cameraViewController = (CameraViewController *)[segue destinationViewController];

    if([segue.identifier isEqualToString:@"createText"]){

        NSLog(@"prepareForSegue: %@ == %@", self.addingText.text,self.getSecondString);
        cameraViewController.inputCreateText =  [NSString stringWithFormat:@"%@", self.addingText.text];
        cameraViewController.secondInputCreateText =[NSString stringWithFormat:@"%@", self.getSecondString];
    }

}

1 个答案:

答案 0 :(得分:0)

我认为您的问题是您正在修改textView:shouldChangeTextInRange:内的字符串,该字符串会针对每个输入的字符进行调用。如果您的目的是在点击按钮后在@之后发送字符串,则在按钮处理程序或prepareForSegue:sender:内进行计算。如果由于某种原因你想坚持自己的实现,那么我建议你把你的目标字符串放在类级别创建的NSMutableArray属性中,这样你就不会丢失数据。然后你可以将该数组中的所有字符串组合起来,如[arrayOfStrings componentsJoinedByString:@" "]