1

我遇到了一个我看不到问题的问题。我试图将一个简单的传递给一个子变量,但即使我用来显示变量中有一个字符串,NSString它也会继续返回。nullNSLog

该变量finalDate不会传递给子视图。

父视图

ChangeTimeViewController *ChangeTimeView = [[ChangeTimeViewController alloc] init];
NSLog(@"%@", date);
ChangeTimeView.finalDate = date;
[ChangeTimeView setDelegate:self];

[self.navigationController pushViewController:ChangeTimeView animated:YES];

子视图.H

#import <UIKit/UIKit.h>

@protocol ChangeTimeViewControllerDelegate;

@interface ChangeTimeViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>

@property (nonatomic, weak) id <ChangeTimeViewControllerDelegate> delegate;
@property (nonatomic) NSString *enteredTime;
@property (nonatomic, strong) UIPickerView *UIPicker;
@property (nonatomic, strong) NSString *finalDate;

@end

@protocol ChangeTimeViewControllerDelegate <NSObject>

- (void)childTimeViewController:(ChangeTimeViewController *)viewController didChooseValue:(NSString *)string;

@end

子视图.M

NSLog(@"%@", self->finalDate);
4

3 回答 3

1

你在做什么是完全没问题的。view(Did/Will)Appear您应该在或类似的方法中插入 NSLog,并且您可以使用该self.finalDate符号来确保您不会尝试读取一些未初始化的 ivar。

注意:属性用_as 前缀合成 ivars(_finalDate 是正确的存储,除非你用其他名称合成它)

如果要确保所有输入参数都传递给视图控制器,请为其创建一个init方法。与此类似:

- (id)initWithDate:(NSDate*)date delegate:(id)delegate
于 2013-07-08T06:11:56.767 回答
0

传递NSStringAsChangeTimeView.finalDate = @"This Is my Simple String";并使用/放入 NSLog方法viewDidLoad以显示 nextViewController 是否丰富?否则,如果您的日期( NSString) 是正确的,那么您的代码是正确的。

于 2013-07-08T06:14:17.803 回答
0

如果您设置为,请检查发生了什么,

ChangeTimeView.finalDate = @"MyString";

并在 view.m 日志中NSLog(@"%@", self.finalDate);

于 2013-07-08T06:15:35.147 回答