我想在忽略模型视图控制器的同时返回一个值到上一个视图。我不想使用通知或设置值到全局字符串,我想做这样的事情。
NSString *Val=[self presentModalViewController:ViewController animated:YES completion:nil];
虽然解雇它应该返回值。
有没有办法做到这一点。提前谢谢。
答案 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