我有一个名为 GettingHere 的 NSObject,它有一个 NSString *content。
然后我有一个 UIViewController ,我在其上以编程方式创建一个按钮,如下所示(此按钮按预期工作):
byAirButton = [UIButton buttonWithType:UIButtonTypeCustom];
byAirButton.tag = 1;
byAirButton.frame = CGRectMake(25, 140, 280.f, 40.f);
UIImage *airButton = [UIImage imageNamed:@"gettingHereByAirButton.png"];
[byAirButton setBackgroundImage:airButton forState:UIControlStateNormal];
[self.view addSubview:byAirButton];
[byAirButton addTarget:self action:@selector(byAirButtonClicked) forControlEvents:UIControlEventTouchUpInside];
对于操作:@selector(byAirButtonClicked),我执行以下操作。gettingHere 是 GettingHere 对象的一个实例。
- (void) byAirButtonClicked
{
gettingHere.content = @"This is how to get here by Air";
NSLog(@"Content: %@", gettingHere.content);
[self performSegueWithIdentifier:@"gettingHereSegue" sender:self];
}
这个想法是为我的 GettingHere 对象设置内容,然后在用户单击 byAirButton 时从下一个视图 (GettingHereViewController) 中调用它。此 NSLog 显示正在设置内容。
在我的 prepareForSegue 中,我执行以下操作:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"gettingHereSegue"])
{
NSLog(@"Content to be passed: %@", gettingHere.content);
GettingHereViewController *vc = (GettingHereViewController *)segue.destinationViewController;
vc.gettingHere.content = gettingHere.content;
}
}
segue 工作正常,但 NSLog 将我的 gettingHere 对象值显示为(null)。
谁能告诉我哪里出错了?我已经经历了几次,但无法弄清楚我哪里出错了。
编辑:这是我实例化 GettingHere 对象的方式。
在 SubNavViewController.h
#import "GettingHereContent.h"
@interface SubNavViewController : UIViewController
@property GettingHereContent *gettingHere;
在 SubNavViewController.m
#import "SubNavViewController.h"
#import "GettingHereViewController.h"
#import "GettingHereContent.h"
@interface SubNavViewController ()
@end
@implementation SubNavViewController
@synthesize gettingHere;
以下是我创建 GettingHere 对象的方法:GettingHere.h
#import <Foundation/Foundation.h>
@interface GettingHereContent : NSObject
@property (nonatomic, strong) NSString *content;
@end
到达这里.m
#import "GettingHereContent.h"
@implementation GettingHereContent
@synthesize content;
@end