Iphone 将信息从popover表传递到web视图
我正在使用带有Iphone 将信息从popover表传递到web视图,iphone,ios,xcode,uitableview,uiwebview,Iphone,Ios,Xcode,Uitableview,Uiwebview,我正在使用带有按钮的视图控制器,用于PopOverView,在Popover视图中,我加载的是仅由代码创建的表,而不是故事板中的TableController 因此,我可以使用弹出窗口,我看到一个包含从plist获取的内容的表,但无法将所选行的信息发送到ViewController中的webview。代码如下: MyViewController.m(iAction)生成popover: - (IBAction)popover:(id)sender { SAFE_ARC_RELEASE(
按钮的视图控制器
,用于PopOverView
,在Popover视图中,我加载的是仅由代码创建的表,而不是故事板中的TableController
因此,我可以使用弹出窗口,我看到一个包含从plist获取的内容的表,但无法将所选行的信息发送到ViewController中的webview。代码如下:
MyViewController.m
(iAction)生成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
发送到第一个控制器中的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被取消时,我在我的网络视图上看不到任何东西。。。
有人有办法解决这个问题吗
谢谢。重新阅读您的帖子后,我看到了您错过的内容
以下是我的修复建议:
A.修改委托以返回twitter对象而不是indexath.row。这是你的新地址:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if([self.delegate respondsToSelector:@selector(selectedTableRow:)]) {
[self.delegate selectedTableRow:[tweetList objectAtIndex:indexPath.row]];
}
}
- (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];
}
确保修改代理的声明以反映这一点。(返回twitter对象而不是行号)
B.这是您的新产品:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if([self.delegate respondsToSelector:@selector(selectedTableRow:)]) {
[self.delegate selectedTableRow:[tweetList objectAtIndex:indexPath.row]];
}
}
- (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];
}
您正在将ViewController设置为Popover的代理是的,我做了,但什么也没发生RADViewController是您的第一个视图控制器吗?不太清楚didSelectRowAtIndexPath中发生了什么:您创建了detailVC,为其分配了相同的数据,并回调到“first view controller”?否您将popover委托设置为ViewController,但您需要RADViewController中的结果,因此它不起作用将委托设置为RADViewController,然后它将起作用是RADViewController是FirstViewController,我在RADTwitterPicker中加载pop。然后使用名为tweetList的NSMUtableArray从plist文件加载内容,并将信息传递到名为twitter的FirstViewController中的NSMutableDictionary。