将信息从弹出窗口传递到Web视图

时间:2013-04-19 09:54:31

标签: iphone ios xcode uitableview uiwebview

我正在ViewController使用Button PopOverView,在弹出窗口视图中我加载了一个仅由代码创建的表,而不是我的故事板中的TableController

所以我可以使用pop-over,我看到一个带有内容的表从plist中获取,但是无法从ViewController中的选定行发送信息到webview。这里是代码:

我的ViewController.m(IBAction)产生popover:

- (IBAction)popover:(id)sender {

    SAFE_ARC_RELEASE(popover); popover=nil;

    //the controller we want to present as a popover
    RADTwitterPicker *controller = [[RADTwitterPicker alloc] initWithStyle:UITableViewStylePlain];
    controller.delegate = self;
    popover = [[FPPopoverController alloc] initWithViewController:controller];
    popover.tint = FPPopoverRedTint;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        popover.contentSize = CGSizeMake(380, 500);
    }
    else {
        popover.contentSize = CGSizeMake(280, 300);
    }
    [popover presentPopoverFromView:sender];
}

在这里我说要弹出以显示RADTwitterPicker.m,我的popover会打开,我可以从表中选择,现在我正尝试将信息从PopOver发送到第一个控制器中的WebView

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if([self.delegate respondsToSelector:@selector(selectedTableRow:)]) {

        RADViewController *detailVC = [[RADViewController alloc] initWithNibName:nil bundle:nil];
        detailVC.twitter = [tweetList objectAtIndex: indexPath.row];
        [self.delegate selectedTableRow:indexPath.row];
    }
}

并使用此方法在RADViewController.m中阅读此内容:

- (void)tweetView {
    [twitWidg addSubview: twitLoad];
    [twitWidg loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[twitter objectForKey:@"web"]]]];
    [twitWidg reload];
    twTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0/2.0) target:self selector:@selector(twiterLoad) userInfo:nil repeats:YES];

}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self tweetView];
}

- (void)selectedTableRow:(NSUInteger)rowNum {
    NSLog(@"SELECTED ROW %d",rowNum);
    [self tweetView];
    [popover dismissPopoverAnimated:YES];
}

但是当popover被解雇时,我的WebView没有看到任何内容...... 任何人有任何想法解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:1)

重新阅读发帖后,我看到了你错过的内容。

以下是我的修复建议:

一个。修改您的委托以返回twitter对象而不是indexPath.row。这是你的新作品:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if([self.delegate respondsToSelector:@selector(selectedTableRow:)]) {

        [self.delegate selectedTableRow:[tweetList objectAtIndex:indexPath.row]];
    }
}

确保修改委托的声明以反映这一点。 (返回twitter对象而不是行号)。

B中。这是你的新人:

- (void)selectedTableRow:(WhateverTwitterClassIs *)twitter {

        [popover dismissPopoverAnimated:YES];
       [twitWidg addSubview: twitLoad];
        [twitWidg loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[twitter objectForKey:@"web"]]]];
        [twitWidg reload];
        twTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0/2.0) target:self selector:@selector(twiterLoad) userInfo:nil repeats:YES];

}
相关问题