按下后退按钮,从表视图控制器返回选定的单元格值

时间:2014-04-08 08:58:49

标签: ios

我有2个表视图控制器,我在按钮上点击第一个控制器,我正在推送到另一个视图控制器。

在第二个表视图控制器上,我有一个项目列表,在选择时被勾选。我想将所选值返回给第一个视图控制器。

另外,请告诉我如何在第一个视图控制器中使用该值。

我无法使用联赛,第二个视图控制器是通用的,因此我无法在其中设置第一个视图控制器的任何变量。

3 个答案:

答案 0 :(得分:0)

一种可能的解决方案是在父控制器中创建一个可变对象(NSMutableArray,NSMutableDictionary)并将其传递给子节点,这样子节点就可以修改它,当你回到父节点时 - 可变对象将包含修改后的对象值。

另一种需要更多知识的方法是使用协议。基本的想法是创建一个协议和一个委托,所以孩子可以通知"它选择了一些值的父级。您可以查看以下示例: http://www.theappcodeblog.com/2011/04/15/passing-data-between-views-tutorial-using-a-protocol-delegate-in-your-iphone-app/

http://iosdevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html

如果您需要更多信息,请告诉我。

答案 1 :(得分:0)

答案 2 :(得分:0)

一种选择是为第二个视图控制器

创建一个委托

在.h中你可以声明

@protocol SecondControllerDelegate <NSObject>
    - (void)selectionDidFinish:(NSArray*)objects;
@end

@interface SecondViewController : UIViewController

@property(nonatomic, weak) id<SecondControllerDelegate> delegate;

然后在你的.m中将消失:

- (void)viewWillDisappear:(BOOL)animated{
    [self.delegate selectionDidFinish:yourArray];
}

在您的第一个视图控制器中,您必须实现此协议:

在.h:

@interface FirstViewController : UIViewController <SecondControllerDelegate>

和.m

- (void)selectionDidFinish:(NSArray*)objects{
    //Do whatever you want with selected objects
}

当然,当你创建第二个视图控制器时,你必须这样做:

SecondViewController *sVC = [[SecondViewController alloc] init];
sVC.delegate = self;
[self.navigationController pushViewController:sVC animated:YES];