2017-04-21 31 views
0

我是新来的目标c,因此开发基本程序。在我的项目中,我有一个View Controller,它有两个文本字段和一个段控件,第一视图控制器和第二视图控制器,我的问题是每当我在主视图控制器(即:段视图控制器)的文本字段中输入数据时,它不会传递到其他视图控制器。在这种情况下,我应该如何使用performSelectoronMainTread方法。下面是我的代码。请帮助我。如何在我的程序中使用performSelectorOnMainThread方法

Thanks in advance 


    #import "SecondViewController.h" 
    #import "FirstViewController.h" 
    #import "SegmentControlViewController.h" 

    @interface SegmentControlViewController()<UITextFieldDelegate> 

    @end 

    @implementation SegmentControlViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 


    self.textField1.delegate = self; 
    self.textField2.delegate = self; 
    self.firstView.hidden = false; 
    self.secondView.hidden = true; 

} 

- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 



    - (IBAction)segmentControlPressed:(id)sender { 


    switch (self.segmentControlButton.selectedSegmentIndex) { 
     case 0: 
     self.firstView.hidden = false; 
     self.secondView.hidden = true; 
     break; 
    case 1: 
     self.firstView.hidden = true; 
     self.secondView.hidden = false; 
     break; 

    default: 
     break; 
    } 
} 

    - (BOOL)textFieldShouldReturn:(UITextField *)textField{ 
    FirstViewController *firstViewController1 = [[FirstViewController 
    alloc]init]; 
    SecondViewController *secondViewController1 = [[SecondViewController 
    alloc]init]; 
    [firstViewController1 displayTextValu:self.textField1.text ]; 
    [secondViewController1 displayTextValu:self.textField2.text]; 
    [textField resignFirstResponder]; 
    return true; 

    } 


} 


@end 

firstViewcontroller.m

#import "SegmentControlViewController.h" 
    #import "FirstViewController.h" 

    @interface FirstViewController() 
    @property (weak, nonatomic) IBOutlet UITableView *tableView1; 
    @end 

    @implementation FirstViewController 

    - (void)viewDidLoad { 
    [super viewDidLoad]; 
    } 

    - (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    } 
    } 

    -(void)displayTextValu:(NSString *) label{ 
    self.firstNameLabel.text = label; 
    [self.view setNeedsDisplay]; 
    } 

    @end 

同样第二视图控制器是written.How到文本字段的数据更新成firstViewController的firstNameLabel

+0

从正在显示firstviewcontroller和secondviewcontroller? – Darshana

+0

firstViewControllrs和secondViewControllers分别与firstView和secondView连接。所以,我的我的segmentControlPressed方法,我打电话给这些视图控制器 –

+0

你的意思是你在firstview和secondview添加Firstviewcontrlller.view和secondviewcontorller.view的对象? firstvireController.view是Firstview中的子视图? – Darshana

回答

0

而不是创建的第一和第二视图控制器的新的对象,使用实例变量。在viewDidLoad中启动它们。此外,添加的NSString变量在你第一和第二viewcontrollers,像

NSString *firstLabelText;

,并在您textƒieldDidEndEditting,尝试设置变量的值。 只是检查这个方法

0

修改调用视图控制器这样的:

[firstViewController1 performSelectorOnMainThread:@selector(displayTextValu:) withObject:self.textField1.text waitUntilDone:NO]; 

但你并不需要使用performSelectorOnMainThread,试试这个GCD电话:

NSString *text1 = self.textField1.text; 
NSString *text2 = self.textField2.text; 
dispatch_async(dispatch_get_main_queue(), ^{ 
    [firstViewController1 displayTextValu:text1 ]; 
    [secondViewController1 displayTextValu:text2]; 
}); 
相关问题