2017-04-21 2 views
0

Ich bin neu zu objektiven c und so die grundlegenden Programme zu entwickeln.In meinem Projekt habe ich einen View-Controller, der zwei Textfelder und ein Segment-Steuerelement für die zwei weitere View-Controller hat erster View-Controller und zweiter View-Controller, Mein Problem ist, wenn ich Daten in die Textfelder des Hauptansicht-Controllers (nämlich: Segmentansicht-Controller) eintrage, wird es nicht in andere View-Controller übertragen. In diesem Szenario wie sollte ich performSelectoronMainTread-Methode verwenden. Nachstehend ist mein Code.Bitte helfen Sie mir.Wie zu verwenden processSelectorOnMainThread Methode in meinem Programm

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 

Ähnlich zweite View-Controller ist written.How Daten in Textfeld firstViewController des firstNameLabel

+0

, von wo aus Sie anzeigen Firstviewcontroller und Secondviewcontroller? – Darshana

+0

firstViewControllrs und secondViewControllers sind mit dem FirstView bzw. dem SecondView verbunden. Also in meinem SegmentControlPressed Methode rufe ich diese View-Controller –

+0

Sie meinen, Sie fügen Objekt von Firstviewcontrlllller.view und secondviewcontorller.view in Firstview und Secondview? firstvireController.view ist Subview in Firstview? – Darshana

Antwort

0

statt der Schaffung neuer Objekte der ersten und der zweiten Ansicht-Controller aktualisiert werden, verwenden Instanz Variablen. Initiiere sie in viewDidLoad. Fügen Sie außerdem NSString Variablen in Ihnen ersten und zweiten Viewcontrollers, wie

NSString *firstLabelText;

und in Ihrem textƒieldDidEndEditting, versuchen, den variablen Wert. einfach überprüfen diese Methode

0

Ändern ruft Controller so zu lesen:

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

aber Sie brauchen nicht performSelectorOnMainThread zu verwenden, versuchen Sie diese GCD Aufruf:

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