У меня есть 3 контроллера вида A, B, C. Я хочу передать данные от A до C ... Я знаю, что мне нужно создать свойство в C и использовать его в А.Передача данных с одного контроллера представления на другой, дающий нуль
Но я не знаю, почему .. после установки значения в а я до сих пор получить нулевое значение в виде C ..
согласно данным предложениям я создал новый проект и новый код ... То, что я хочу достичь, просто из вида. Я хочу, чтобы значение передавалось в виде C..but в настоящее время оно дает нуль.
My view 1.h file ...
@interface ViewController : UIViewController
- (IBAction)ActionButton:(id)sender;
@end
вид 1.m файл ..
#import "ViewController.h"
#import "ViewController3.h"
#import "ViewController2.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)ActionButton:(id)sender {
ViewController3 *v3 = [[ViewController3 alloc]init];
v3.string = @"String";
// [self.view addSubview:v3.view];
ViewController2 *v2 = [[ViewController2 alloc]initWithNibName:@"ViewController2" bundle:nil ];
[self.view addSubview:v2.view];
}
@end
Посмотреть 2.h файл ...
@interface ViewController2 : UIViewController
- (IBAction)ActionButton:(id)sender;
@property (nonatomic,retain) NSString *string1;
@end
Посмотреть 2.М файл
#import "ViewController2.h"
#import "ViewController3.h"
@interface ViewController2()
@end
@implementation ViewController2
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)ActionButton:(id)sender {
ViewController3 *v3 = [[ViewController3 alloc]initWithNibName:@"ViewController3" bundle:nil ];
[self.view addSubview:v3.view];
}
@end
View 3 .h файл ..
@interface ViewController3 : UIViewController
@property(nonatomic,retain) NSString *string;
@end
А Посмотреть 3.M файл ...
#import "ViewController3.h"
@interface ViewController3()
@end
@implementation ViewController3
@synthesize string;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSLog(@"%@",string);
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
FYI, если я удалить комментируемой код в view1 я получаю значение в представлении 3, но это меняет мою последовательность, я не хочу .. .
Попробуйте изменить (сохранить, неатомно) NSString * WithdrawType; to (сильный, неатомный) NSString * WithdrawType; – Engnyl
Неужели вы забыли «синтезировать» свою собственность в файле .m? – HRM
Невозможно изменить свойство на сильное, не помогло ... И @HRM я синтезировал свойство в .m файле – Audi