我的NavigationController内部4个viewControllers序列,每个抓取输入的几个文本框从被存储在一个的NSMutableDictionary用户。
每一个VC的设置的本身了作为nextVC的委托它塞格斯之前,也一起传递的NSMutDict。
这工作得很好。
我不明白这是:
说我有填补了VC1 5个文本框。 然后,我给自己定下的VC2的代表,通过VC2的字典,输入数据和原因请看VC2。 在VC2我填另外4个文本框并将其添加到字典中。 如果我再决定我需要改变一些东西在VC1我点击后退按钮并修改数据。 但是,当我再次向前走我失去VC2的东西,我输入。
如何把字典回VC1与添加的信息,这样,当它被传递转发给VC2再次它有它的一切?
委托(VC1)具有来更新其与VC2字典的字典的方法。
在VC1方法:我也通过在prepareForSegue设置它在定制的VC2 backBarButtonItem。
我觉得我越来越近,但...
我只能得到目标的行动通过设置在VC2发生leftBarButtonItem和使用工作,而不是默认回按钮。
设置在VC1后退按钮(prepareForSegue :)似乎并没有允许任何目标或行动进行设置。
我知道我不能设置的返回按钮VC2,所以我该怎么办? 我可以使用委托设置后退按钮的目标和行动从VC2?
我想这可能是一些做UINavigationBarDelegate但我想不通的地方放什么这一点。 我试着在VC2设置它,但它没有做任何事情。
TIA。
下面是相关的代码:
协议:
#import <Foundation/Foundation.h>
@protocol IAXAddNewUserDelegate <NSObject>
@required
- (void)updateNewUserDataWithData: (NSMutableDictionary *)newData;
@end
从VC1.h:
#import "IAXAddNewUserDelegate.h"
@interface IAXAddNewUser1 : UITableViewController <UITextFieldDelegate, UIAlertViewDelegate, IAXAddNewUserDelegate>
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) User *selectedUser;
@property (strong, nonatomic) User *aNewUser;
@property BOOL isFirstUser;
- (void)updateNewUserDataWithData: (NSMutableDictionary *)newData;
@end
从VC1.m:
#pragma mark - Segues
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"AddUser2"]) {
IAXAddNewUser2 *addUser2VC = segue.destinationViewController;
addUser2VC.managedObjectContext = self.managedObjectContext;
addUser2VC.progressTotal = self.progressTotal;
addUser2VC.isFirstUser = self.isFirstUser;
addUser2VC.userData = self.userData;
addUser2VC.delegate = self;
if (self.selectedUser) {
addUser2VC.selectedUser = self.selectedUser;
}
self.title = @"Step 1";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(passDataBack:)];
self.navigationItem.backBarButtonItem = backButton;
}
}
#pragma mark - IAXAddNewUserDelegate Methods
- (void)updateNewUserDataWithData: (NSMutableDictionary *)newData
{
self.userData = newData;
NSLog(@"Updated AddUserVC1");
}
从VC2.m
-(void)passDataBack:(id)sender
{
NSLog(@"Sending Data Back to VC1");
[self.delegate updateNewUserDataWithData:self.userData];
[self.navigationController popViewControllerAnimated:YES];
}