【问题标题】:passing data when pressing back button按下返回按钮时传递数据
【发布时间】:2014-08-10 10:54:58
【问题描述】:

我正在尝试在按下后退按钮时将数据传递给视图控制器,因为我正在使用 viewDidDisappear 方法,该方法工作正常。问题是,即使我在目标 viewController 中创建了对象,它也找不到它?

在 ViewControllerA 类型的对象上找不到属性“rentTimeArray”

我正在尝试将 nsarray 从 viewcontrollerB 发送到 viewcontrollerA

viewcontrollerB.m

首先我导入目标头文件

导入“ViewControllerA.h”

viewDidDissapear 方法:

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    if (self.isMovingFromParentViewController) {

        NSArray * values = [pickedArray allValues];

        ViewControllerA *newHome = [[ViewControllerA alloc] init];


        newHome.rentTimeArray = newHome;
}

ViewControllerA.m

@property (nonatomic, weak) NSArray *rentTimeArray;

ViewControllerA.h

@Synthenize rentTimeArray,

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    如果我很好理解你的问题,当用户在ViewControllerB 中点击返回按钮时,你想在ViewControllerA 中设置rentTimeArray 的值,对吗?如果是,那么您的代码有几个问题。首先:

    你的rentTimeArray 应该在ViewControllerA.h 中声明,因为它应该对像你的viewcontrollerB 类这样的其他实例可见。

    第二个问题:

    您不能在viewWillDisappear:animated 方法中初始化其他ViewControllerA,因为它将在导航堆栈中创建除当前现有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 个视图控制器之间传递值。

    【讨论】:

    • 使用委托或块模式会更有效吗?
    • 高效、更快、更易读,而且还具有“良好的编程风格”。如果你学习过一次委托和/或块模式,你就会爱上使用它们!
    • 好的,我现在正在做委托模式,我会接受这个答案,因为它有效。提前谢谢你
    • 在这种情况下使用协议!
    猜你喜欢
    • 1970-01-01
    • 2016-04-29
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多