是否可以在dismissmodelviewcontroller时返回一个值

时间:2014-10-17 08:17:30

标签: ios objective-c iphone

我想在忽略模型视图控制器的同时返回一个值到上一个视图。我不想使用通知或设置值到全局字符串,我想做这样的事情。

 NSString *Val=[self presentModalViewController:ViewController animated:YES completion:nil];

虽然解雇它应该返回值。

有没有办法做到这一点。提前谢谢。

2 个答案:

答案 0 :(得分:2)

按照步骤创建自定义协议。

ViewController.h

中的

@protocol textSendProtocol<NSObject>
-(void)sendText:(NSString *)strText;
@end
@interface ViewController : UIViewController
@property(nonatomic,strong)id <textSendProtocol> delegate;
@end
ViewController.m

中的

if ([self.delegate respondsToSelector:@selector(sendText:)])
        [self.delegate sendText:@"yourText"];
[self dismissViewControllerAnimated:YES completion:nil];

在您呈现ViewController的其他视图控制器中说 ExampleVC

@interface ExampleVC ()<textSendProtocol>
@end


ViewController *obj = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
obj.delegate = self;
[self presentViewController:obj animated:YES completion:^{}];

-(void)sendText:(NSString *)strText
{
    // you wil get text here.
    NSLog(@"%@",strText);
}

也许这会对你有帮助。

答案 1 :(得分:2)

您应该阅读本指南,了解如何使用Storyboard并使用segues将数据从一个视图控制器返回到另一个视图控制器。这是iOS上更新的做事方式。 https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/ThirdTutorial.html#//apple_ref/doc/uid/TP40011343-CH10-SW1