【问题标题】:Pass information from popover table to a web view将信息从弹出表传递到 Web 视图
【发布时间】:2013-04-12 16:30:30
【问题描述】:

我使用ViewControllerButton 来表示PopOverView,在弹出视图中我加载了一个仅由代码创建的表格,而不是我的故事板中的TableController

所以我可以使用弹出窗口,我看到一个包含从 plist 获取的内容的表格,但无法将所选行中的信息发送到 ViewController 中的 web 视图。这里是代码:

我的ViewController.m (IBAction) 生成弹出框:

- (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 发送到第一个控制器中的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];
}

但是当弹出框被关闭时,我的WebView 上什么也看不到... 任何人有任何想法来解决这个问题?

谢谢。

【问题讨论】:

  • 您将 ViewController 设置为 popover 的委托
  • 是的,但什么也没发生
  • RADViewController 是您的第一个视图控制器吗?不太清楚 didSelectRowAtIndexPath 中发生了什么:您创建了 detailVC,为其分配了相同的数据,然后回调...到“第一个视图控制器”?
  • 没有将弹出窗口委托设置为 ViewController,但您需要 RADViewController 中的结果,因此它不起作用将委托设置为 RADViewController 然后它将起作用
  • 是的 RADViewController 是 FirstViewController,我在 RADTwitterPicker 上的弹出窗口中加载。然后使用名为 tweetList 的 NSMUtableArray 从 plist 文件加载内容,并尝试将信息传递给我的 FirstViewController 中名为 twitter 的 NSMutableDictionary。

标签: iphone ios xcode uitableview uiwebview


【解决方案1】:

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

以下是我的修复建议:

A.修改您的委托以返回 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];

}

【讨论】:

    猜你喜欢
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多