使用NSNotification检测UIButton push以更改UIWebView

时间:2014-06-30 01:13:25

标签: objective-c uiwebview segue nsnotificationcenter nsnotification

我的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。

1 个答案:

答案 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。