iOS不会将变量传递给子视图?

时间:2013-07-08 06:02:14

标签: ios objective-c

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

变量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);

3 个答案:

答案 0 :(得分:1)

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

注意:属性使用_作为前缀合成ivars(_finalDate是正确的存储,除非您使用其他名称将其合成)

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

- (id)initWithDate:(NSDate*)date delegate:(id)delegate

答案 1 :(得分:0)

通过NSString作为ChangeTimeView.finalDate = @"This Is my Simple String";并在NSLog方法中使用/ put viewDidLoad进行展示是否丰富了nextViewController?否则,如果日期NSString)正确,那么您的代码是正确的。

答案 2 :(得分:0)

如果你设置了喜欢,请检查发生了什么

ChangeTimeView.finalDate = @"MyString";

并在view.m log NSLog(@"%@", self.finalDate);