0

私はforを使用ViewControllerしています。ポップオーバー ビュー内では、コードのみで作成されたテーブルをロードし、ストーリーボードには決してロードしません。ButtonPopOverViewTableController

ポップオーバーを使用できるので、plist からコンテンツを取得したテーブルが表示されますが、選択した行から ViewController の webview に情報を送信できません。ここにコード:

ポップオーバーを生成する私の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];
}

ここで showRADTwitterPicker.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...誰もこれを修正する考えがありますか?

ありがとう。

4

1 に答える 1

1

あなたの投稿を読み直した後、あなたが見逃していることがわかりました。

これを修正するための私の提案は次のとおりです。

A. デリゲートを変更して、indexPath.row ではなく twitter オブジェクトを返すようにします。これがあなたの新しいものです:

-(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];

}
于 2013-04-19T19:45:43.470 に答える