为什么我的segue不起作用?在Xcode目标c上

时间:2016-12-13 11:05:52

标签: ios objective-c xcode segue

我是新手,我尝试在另一个视图控制器中更改文本字段的文本,我只是写这样的东西准备segue,

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

    secondViewcontroller *transferViewController = segue.destinationViewController;

    NSLog(@"prepareForSegue: %@", segue.identifier);
    if([segue.identifier isEqualToString:@"1"]){
        transferViewController.IDtextfield.text = @"1";   
    }
    else if([segue.identifier isEqualToString:@"2"]){
        transferViewController.IDtextfield.text= @"2";
    }
    else if([segue.identifier isEqualToString:@"3"]){
        transferViewController.IDtextfield.text = @"3";
    }
    else if([segue.identifier isEqualToString:@"4"]){
        transferViewController.IDtextfield.text = @"4";    
    }
}

任何人都可以告诉我是否有任何错误吗?

2 个答案:

答案 0 :(得分:0)

尝试语法: -

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"])
    {
        // Get reference to the destination view controller

        YourViewController *vc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [vc setMyObjectHere:object];
    }
}

答案 1 :(得分:0)

试试这段代码:

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

        if ([[segue identifier] isEqualToString:@"1"])
        {
            SecondViewController *transferViewController = [segue destinationViewController];
    transferViewController.data = @"1";
        }
    else if ([[segue identifier] isEqualToString:@"2"])
        {
            SecondViewController *transferViewController = [segue destinationViewController];
    transferViewController.data = @"2";
        }
    else if ([[segue identifier] isEqualToString:@"3"])
        {
            SecondViewController *transferViewController = [segue destinationViewController];
    transferViewController.data = @"3";
        }
    else{
            SecondViewController *transferViewController = [segue destinationViewController];
    transferViewController.data = @"4";
        }

}

SecondViewController.h

 @interface SecondViewController : UIViewController
         @property (nonatomic, readonly) NSString* data;
 @end

SecondViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    IDtextfield.text = self.data;
}

注意:当您创建VC的对象时,它只是创建该VC的引用,即当您创建SecondVC的对象时,它不会将完整的控制器加载到内存中。这意味着,TextField不在内存中,这就是为什么在未加载VC之前无法设置textField文本的原因。

在这里,我只是发送我想在文本字段中设置的数据,加载VC后,我设置了文本字段文本。