Может кто-нибудь, пожалуйста, посмотрите, где я ошибаюсь?Свойство объекта, заданное как null
У меня есть объект Object с единственным свойством NSString.
У меня есть MainViewController с кнопкой на нем. Кнопка создается программно и добавляется во время выполнения.
Когда вы нажмете эту кнопку, предполагается установить значение объекта «Свойство» для строки и передать его следующему ViewController.
Мне удаётся установить значение свойства Object, но когда я вызываю это значение для его передачи, оно имеет значение null. Я пробовал много разных решений, но ничего не работает. Может ли кто-нибудь увидеть, где моя проблема? Я добавил все соответствующий код ниже
Object.h
@interface Object : NSObject
@property (nonatomic, strong) NSString *content;
Object.m
#import "Object.h"
@implementation Object
@synthesize content;
Затем в MianViewController создать кнопку и установите значение свойства объекта MainViewController.h
@interface MainViewController : UIViewController
@property (nonatomic, strong) UIButton *myButton;
MainViewController.m
#import "MainViewController.h"
#import "SecondaryViewController.h"
#import "Object.h"
.
.
@synthesize myButton;
- (void)viewDidLoad
{
[super viewDidLoad];
myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.tag = 1;
myButton.frame = CGRectMake(20, 140, 280.f, 40.f);
UIImage *airButton = [UIImage imageNamed:@"gettingHereByAirButton.png"];
[myButton setBackgroundImage:airButton forState:UIControlStateNormal];
[self.view addSubview:myButton];
[myButton addTarget:self action:@selector(myButtonClicked) forControlEvents:UIControlEventTouchUpInside];
}
- (void) myButtonClicked
{
[self performSegueWithIdentifier:@"mySegue" sender:self];
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"Getting Here...");
Object *object = [[Object alloc] init];
object.content = @"This is the content of the Object";
NSLog(@"Content of Object Set To: %@", object.content);
SecondaryViewController *vc;
vc.object = object;
NSLog(@"Object: %@", object);
NSLog(@"Object.content: %@", object.content);
NSLog(@"ViewController.object.content: %@", vc.object.content);
NSLog(@"Just Did Stuff...");
}
И SecondaryViewController где метка должна быть установлена в том, что из строки объекта SecondaryViewController.h
#import "Object.h"
@interface SecondaryViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *contentLabel;
@property (nonatomic, strong) Object *object;
SecondaryViewController.m
@synthesize object;
@synthesize contentLabel;
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Content of Object: %@", object.content);
self.contentLabel.text = object.content;
}
И, наконец, захват экрана моего NSLog, когда приложение запущено HERE
ОК, так что я не знаю, что я сделал, но я попробовал это раньше, и он не работает для меня. Изменил его в соответствии с ответом и теперь отлично работает. Бесконечно благодарен – heyred