2012-03-20 3 views
0

Je fais une application uniquement dans le but d'apprendre plus objectif c. Cette application amène fondamentalement un utilisateur à une vue modale et donne ensuite à l'utilisateur les options (uibuttons) à cliquer. Lorsqu'un utilisateur appuie sur un bouton, la vue modale est ignorée et je souhaite prendre les données provenant de ce bouton (qu'il s'agisse du titre du bouton, de la balise, etc., selon la méthode la plus facile à utiliser) et la stocker comme variable. ma vue principale. J'ai essayé d'utiliser un NSString externe défini dans un fichier .h séparé, mais pas de chance. Qu'est-ce que je rate?Passer des données de vue pour voir?

+0

S'il vous plaît mettre votre code afin que nous puissions vous aider .. – nithin

Répondre

0

vous devez utiliser les méthodes de délégués pour passer la valeur voir documentation Apple

1

délégations d'utilisation. faire un protocole.

@protocol SelectValueDelegate <NSObject> 
@optional 
- (void) selectedValue:(NSString *)values selectionViewController:(UIViewController *)controller; 
- (void)selectionCanceled:(UIViewController *)controller; 
@end 

mettre en œuvre dans votre MainViewController.h

@interface MainViewController : UIViewController<SelectValueDelegate> { 
    //.... 
} 

et le fichier .m ressemble à ceci:

- (void) selectedValue:(NSString *)values selectionViewController:(UIViewController *)controller 
{ 
    //here you have value. 
    [controller dissmissModalViewControllerAnimated:YES]; 
} 
- (void)selectionCanceled:(UIViewController *)controller 
{ 
     [controller dissmissModalViewControllerAnimated:YES]; 
} 

et vous ModalViewController faire une propriété de délégué comme celui-ci:

@interface ModalViewController : UIViewController 
     id<SelectValueDelegate> delegate; 
} 
@property(assign)id delegate; // synthesize it also 

maintenant clic de bouton faire quelque chose comme ceci:

-(IBAction)buttonClicked:(id)sender 
{ 
     [delegate selectedValue:@"Value" selectionViewController:self]; 
} 

et en le présentant de façon modale à l'intérieur MainViewController, faire quelque chose comme ceci:

ModalViewController *screen = [[ModalViewController alloc] initWithBlahblah]; 
screen.delegate = self; 
[self.navigationController presentModalViewControllerAnimated:YES]; 
+0

Je vais essayer - Il semble simple et utile. Je vous remercie! – Radrider33

0

Vous pouvez stocker les données dans un objet dans le appDelegate qui est le fichier délégué pour les applications,

Vous pouvez déclarer un objet dans appDelegate:

NSString *buttonName; 

Puis propertise et synthétise cet objet.

Après avoir fait cela, mettre un code dans le contrôleur vue que vous ouvrez une Modal VIew:

appDelegate.buttonName = yourbutton.titleLabel.text; 

Maintenant, même après avoir rejeté le point de vue modal, vous allez avoir le titre du bouton stocké dans la l'objet de appldelegate, et vous pouvez y accéder à partir de n'importe où dans votre application.

0

Supposons que vous avez deux viewcontrollers dire A & B

Votre A.h

{ 
    NSString *strData; 
    int cId; 
} 

@property (nonatomic, retain) NSString *strData; 
@property (readwrite) int cId; 

Dans votre a.m

@synthesize strData,cId; 

Votre B.h

@class A 

{ 
    A *aObj; 
} 

Dans votre B.m

#import "A.h" 

- (void) viewDidLoad 
{ 
    aObj=[A alloc] init]; //alloc object of A 
    [aObj setCId:10]; //set value for cId 
    [aObj setStrData:@"Hello from B"]; //set value for strData 
    //do what ever 
    [aObj release]; //don't forget 
} 
Questions connexes