我有2个表视图控制器,我在按钮上点击第一个控制器,我正在推送到另一个视图控制器。
在第二个表视图控制器上,我有一个项目列表,在选择时被勾选。我想将所选值返回给第一个视图控制器。
另外,请告诉我如何在第一个视图控制器中使用该值。
我无法使用联赛,第二个视图控制器是通用的,因此我无法在其中设置第一个视图控制器的任何变量。
答案 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)
您可以创建委托。查看以下链接: http://www.hardcodedstudios.com/home/ryan-newsome/simpledelegatetutorialforiosdevelopment
答案 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];