我遇到了一个我无法看到问题的问题。我试图将一个简单的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);
答案 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);