[objective-c]将数据传递到根控制器

发布时间: 2016/10/2 10:52:01
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在开发一个联系人的应用程序。我想要添加的联系人,打开一个新的视图,像这样︰

具有称为接点 NSMutableArray RootViewController.m......

- (IBAction)addContact:(id)sender {

    AddContViewController *cont = [[AddContViewController alloc]init];
    [self.navigationController presentViewController:cont animated:YES completion:nil];

}

回来,然后将该联系人添加到根视图控制器的数组︰

AddContViewController.m

- (IBAction)acceptAction:(id)sender {


    if ([[firstName text] length] < 1 && [[lastName text] length] < 1)
    {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Oh no!" message:@"Invalid contact information!" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
        [alert show];
    }
    else{

创建联系人,并把它放在根视图控制器阵列

   Contact *cont = [[Contact alloc]initWithFirstName:[firstName text] lastName:[lastName text] andDOB:[dobPicker date]];

和现在我不知道该怎么办......

    [self dismissViewControllerAnimated:YES completion:^{
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Success!" message:@"Contact added successfully!" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
        [alert show];
        }];
    }
}

解决方法 1:

有几种方法来传递回来的数据。我会建议设立委托方法。 这在任何进口后你 AddContViewController.h 的顶部添加︰

@class addContViewController
@protocol addContViewControllerDelegate <NSObject>
-(void)addContViewController:(addContViewController *)controller didAddContact:(Contact *)contact;
@end

及后接口部分添加

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

然后在你 RootViewController.h 添加Protocol接口线<addContViewControllerDelegate>
现在在你 RootViewController.m 方法 addContact 只是你推新视图之前,添加︰

cont.delegate = self;

现在在你 AddContViewController.m 而不是解雇的视图,请︰

[self.delegate addContViewController:self didAddContact:cont];

这将调用您的 RootViewController 中的新方法,它会通过接触和在这里你可以用它做想要你想要的但首先解雇的视图︰

-(void)addContViewController:(addContViewController *)controller didAddContact:(Contact *)contact {
self dismissViewControllerAnimated:YES;

}
赞助商