-1

非常抱歉,伙计们,我知道以前有人问过这个问题。但是经过 4 个小时的搜索,我找不到一个很好的解释。

所以我想做的是:我有一个tableView,用户可以在其中选择一些东西(通过使用AccessoryCheckmark)。当 UINavigationBar 中的“返回”按钮被触摸(viewWillDisappear)时,我想将选定的行(我有一个名为“selectedRowArray”的数组正确地给我选择的值)发送回它之前的 NavigationController。我阅读了有关 AppDelegates、@propertys、委托和(正确地是“最糟糕”的方式:)NSUserDefaults 的信息。

请有人告诉我,将我的数据从 tableView2 BACK 传递到 tableView1 的最佳(最智能)方式是什么?

4

4 回答 4

1

使前一个视图控制器成为选择视图控制器的委托。

从选择视图控制器调用前一个视图控制器的委托方法来告诉它选择了什么。

基本上,他们的关键是使用委托。使设置的委托成为您的选择控制器的弱属性(这意味着您的目标是 iOS 5 或更高版本,您应该是)。

协议是可选的。

于 2012-09-04T20:12:46.277 回答
0

要将数据发送到视图控制器堆栈(导航堆栈)中的前一个视图,您可以使用以下代码段:

int previous = self.navigationController.viewControllers.count - 2;
UIViewController *controller = [self.navigationController.viewControllers objectAtIndex:previous];
controller.arrayProperty = @[];  //array element to pass into whatever specified property
[self.navigationController popViewControllerAnimated:YES];

当然,请务必将 UIViewController 更改为之前的视图类名称,并确保在之前的视图控制器头文件中创建属性,如下所示:

@property(strong)NSArray *arrayProperty;
于 2012-09-04T19:59:11.743 回答
0

我有类似的情况,我是 ios dev 的新手,所以我希望你能把我的回答当作一个线索。甚至在我找到一件简单的事情之前,我也不得不搜索数小时。

我与@protocol 和代表们相处得很艰难。

我找到了一个教程(我目前找不到),它基本上是在你的 nextViewController 中定义一个属性并从 prevViewController 设置它的值

//nextViewController.h

@interface nextViewController
@property (nonatomic, strong) NSString *searchString;
@end

// prevController.h

import "NextViewController.h"
@property (weak, nonatomic) PrevViewController *prevViewController;

// prevController.m
-someMethodFromWhereYouWantToSetTheProperty {
   prevViewController.searchString = self.yourvalue;
}

编辑:

我已经指出我是 ios dev 的新手。所以,我不太确定这是否是正确的方法,或者它是否有任何缺点。

于 2012-09-05T05:34:58.933 回答
-1

Braydens 的方式确实不错,但我更喜欢做一个单例,它很好并且易于处理。使单例存储您的属性。您还可以随时检查属性是否为零。

于 2012-09-04T20:08:07.520 回答