ios - microsoft - visual studio installer
Objetivo c: pasar el valor de la cadena utilizando delegado (2)
Supongo que no configuró el delegado.
Establecerlo así:
GreenViewController *myVc = [[GreenViewController alloc] init];
myVc.delegate = self;
¡Pon esto en tu vista de control de vista sí carga el método!
Quiero pasar UITextField * nameText de GreenViewController a UILabel * nameValue en ViewController usando delegate.
Hice delegate, se llama al método onSave en ViewController pero la pantalla no retrocede y no se pasa el nombre. ¿Cuál es el problema? Aquí están los archivos de cabecera e impelentación:
GreenViewController.h
#import <UIKit/UIKit.h>
@protocol GreenViewDelegate <NSObject>
-(void)onSave:(NSString*)nameValue;
@end
@interface GreenViewController : UIViewController
@property id<GreenViewDelegate> delegate;
@property (nonatomic) NSString* sliderValuePassed;
@property (weak, nonatomic) IBOutlet UIButton *Next;
@property (weak, nonatomic) IBOutlet UIButton *Save;
@property (weak, nonatomic) IBOutlet UIButton *Back;
@property (weak, nonatomic) IBOutlet UILabel *sliderTextValue;
@property (weak, nonatomic) IBOutlet UITextField *NameText;
- (IBAction)save:(id)sender;
@end
GreenViewController.m
#import "GreenViewController.h"
#import "ViewController.h"
@interface GreenViewController ()
@end
@implementation GreenViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.sliderTextValue.text = self.sliderValuePassed;
}
- (IBAction)back:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)save:(id)sender {
[self.delegate onSave:self.NameText.text];
[self.navigationController popViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
ViewController.h
#import <UIKit/UIKit.h>
#import "GreenViewController.h"
@interface ViewController : UIViewController <GreenViewDelegate>
@property (weak, nonatomic) IBOutlet UISlider *slider;
@property (weak, nonatomic) IBOutlet UILabel *sliderTextValue;
@property (weak, nonatomic) IBOutlet UIButton *EnterName;
@property (weak, nonatomic) IBOutlet UILabel *NameValue;
@property (weak, nonatomic) IBOutlet UIButton *LikeIOS;
@property (weak, nonatomic) IBOutlet UISwitch *CheckboxIOS;
@end
ViewController.m
#import "ViewController.h"
#import "RedViewController.h"
#import "GreenViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.sliderTextValue.text = [NSString stringWithFormat:@"Slider value = %d",(int)self.slider.value];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"yellowToGreen"]){
GreenViewController* gVC = segue.destinationViewController;
gVC.sliderValuePassed = [NSString stringWithFormat:@"Slider value = %d",(int)self.slider.value];
gVC.delegate = self;
}else if([segue.identifier isEqualToString:@"yellowToRed"]){
RedViewController* rVC = segue.destinationViewController;
rVC.sliderValuePassed = [NSString stringWithFormat:@"Slider value = %d",(int)self.slider.value];
rVC.CheckboxIOS = self.CheckboxIOS;
}
}
- (IBAction)sliderChangeValue:(id)sender {
int sliderVal = self.slider.value;
self.sliderTextValue.text = [NSString stringWithFormat:@"Slider value = %d",sliderVal];
}
-(void)onSave:(NSString*)nameValue{
NSLog(@"onSave in father controller");
self.NameValue.text = [NSString stringWithFormat:@"Name = %@",nameValue];
}
@end
intente con GreenViewController.h:
@property (nonatomic, assign) id<GreenViewDelegate> delegate;
y GreenViewController.m:
- (IBAction)save:(id)sender {
[_delegate onSave:self.NameText.text];
[self.navigationController popViewControllerAnimated:YES];
}
ViewController. * Parece estar bien