我的VC中有两个按钮,目前它们都连接到各自的pdf文件。还有另一个按钮Push,它转到rootviewcontroller。在RVC中,我有一个UIWebView。如何按下按钮A显示a.pdf,按钮B显示b.pdf?
我想,我怎样让rvc正确地听这个事件?
我的RVC.m中的UIWebView片段
pdfViewer=[[UIWebView alloc]initWithFrame:CGRectMake(420, 190, 340, 445)];
NSString *path = [[NSBundle mainBundle] pathForResource:@"nameofpdf" ofType:@"pdf"];
NSURL *targetURL = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[pdfViewer setAlpha: .8];
[pdfViewer loadRequest:request];
[self.view addSubview:pdfViewer];
按钮按下我的VC
-(IBAction)pushButtonPressed{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
RootViewController *RVC = [storyboard instantiateViewControllerWithIdentifier:@"Root"];
[UIApplication sharedApplication].delegate.window.RootViewController = RVC;
}
总结: 我首先按下A或B,然后按下按钮,这将把我带到RVC,它将显示pdfA或pdfB。
答案 0 :(得分:1)
为您希望其打开的pdf文件声明RVC的属性。在你持有按钮的viewController中,buttonFunction将文件名传递给segue作为prepareForSegue中的sender参数。在prepareForSegue中获取dest视图控制器并设置属性。一个简短的片段可能更清晰
在带有按钮的viewController中:
- (void)buttonA {
[self performSegueWithIdentifier:@"mySegue" sender:@"pdfA.pdf"];
}
- (void)buttonB {
[self performSegueWithIdentifier:@"mySegue" sender:@"pdfB.pdf"];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"mySegue"]) {
UIViewController *rvc = segue.destinationViewController;
rvc.pdfToOpen = sender;
}
}
您必须调整prepareForSegue以使用正确的类,当然使用正确的属性名称,但这通常是您应该如何通过segue将操作中的信息传递给视图控制器。
进入RVC后,您可以访问该属性,可能是在viewDidLoad中,并告诉您的webView加载正确的pdf。