我正在尝试使用viewDidDisappear方法按下后退按钮时将数据传递给viewcontroller,这样可以正常工作。问题是即使我在目标viewController中创建了对象,它也找不到它?
property' rentTimeArray'在ViewControllerA类型的对象上找不到
我试图将一个nsarray从viewcontrollerB发送到viewcontrollerA
首先导入目标头文件
viewDidDissapear方法:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (self.isMovingFromParentViewController) {
NSArray * values = [pickedArray allValues];
ViewControllerA *newHome = [[ViewControllerA alloc] init];
newHome.rentTimeArray = newHome;
}
@property (nonatomic, weak) NSArray *rentTimeArray;
@Synthenize rentTimeArray,
答案 0 :(得分:0)
如果我很好理解您的问题,当用户点击rentTimeArray
中的backButton时,您希望在ViewControllerA
中设置ViewControllerB
的值吗?如果是,那么您的代码有几个问题。首先:
你的rentTimeArray
应该在ViewControllerA.h
中声明,因为它应该对你的viewcontrollerB
类之类的其他实例可见。
第二个问题:
您无法在ViewControllerA
方法中初始化其他viewWillDisappear:animated
,因为它会在导航堆栈中创建除当前现有ViewControllerA
之外的其他实例。如果你想以这种方式实现这一点,你应该做这样的事情:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (self.isMovingToParentViewController) {
for (UIViewController *controller in self.navigationController.viewControllers) {
if ([controller isKindOfClass:[ViewControllerA class]]) {
ViewControllerA *viewControllerA = (ViewControllerA *)controller;
controller.rentTimeArray = [pickedArray allValues];
break;
}
}
}
}
尽管如此,您应该了解委托或块模式以在2个viewControllers之间传递值。