1

可能的重复:
在视图控制器之间传递数据

我有 2 个模态视图。第一个模态视图用于编辑数量和价格;当我们单击第一个模态视图的价格文本字段时使用第二个模态视图,以便给出我们更改价格的原因,我们可以将新价格放入模态视图的价格文本字段中。当我在第二个模式视图中设置价格时,我希望第一个模式视图中的价格发生变化。如何捕捉第二个模态视图的值以放入第一个模态视图?

4

4 回答 4

1

使用NSNotification中心

您必须在First Modalview中添加观察者事件

    -(void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reload:) name:@"refresh" object:nil];
    }
- (void)reload:(NSNotification *)notification {
    textfield.text= [[notification userInfo] valueForKey:@"price"] ;
}

第二个模态视图中,您必须在完成编辑后发布通知

(传递您的文本字段值)

NSDictionary *userInfo = [NSDictionary dictionaryWithObject:@"333" forKey:@"price"];
   [[NSNotificationCenter defaultCenter] postNotificationName:@"refresh" object:nil userInfo:userInfo]

;

最后移除观察者

-

(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"refresh" object:nil];

}
于 2012-08-16T05:52:51.147 回答
0

您可以使用Singleton来保存该类的一些数据

于 2012-08-16T04:55:53.057 回答
0

以下简单的步骤将使您能够做到这一点。

在第一个 Modal ViewController 中,您可以声明一个函数,如

- (void) setUpdatedValueWithValue: (NSString *) newValue
{
    self.objTextField.text  =  newValue;
}

在头文件中也声明这个函数,以便我们可以从其他类访问它。

在第二个 Modal ViewController

SecondViewController.h

@interface SecondViewController : UIViewController
{
     id    objFirstViewController;
}
@property (nonatomic, retain)   id   objFirstViewController;

@end

第二视图控制器.m

@implementation SecondViewController

@synthesize objFirstViewController;

@end

在你提出喜欢的SecondViewController对象之前,FirstViewControllerSecondViewController

- (void) presentSecondViewController
{
    SecondViewController    *objSecondViewController  =  [[SecondViewController alloc] init];
    objSecondViewController.objFirstViewController    =  self;
    [self presentModalViewController: objSecondViewController animated: YES];
    [objSecondViewController release];
    objSecondViewController = nil;
}

然后,在您调用的函数中,SecondViewController您可以在值编辑后关闭您可以执行的操作,

- (void) finishEdit
{
    if([objFirstViewController respondsToSelector: @selector(setUpdatedValueWithValue:)])
    {
        [objFirstViewController performSelector: @selector(setUpdatedValueWithValue:) withObject: editedTextView.text];
    }
    [self dismissModalViewControllerAnimated: YES];     
}

希望这可以帮助。

于 2012-08-16T05:40:04.943 回答
-1

用你的关键字设置你的对象

[[NSUserDefaults standardUserDefaults]setObject:@"value of second modal view" forKey:@"keyName"];

而不是在第一个模态视图中获取该对象

NSString *name = [[NSUserDefaults standardUserDefaults]objectForKey:@"keyName"];
于 2012-08-16T04:38:43.943 回答