1

私はスプリットビューアプリケーションを持っています。MasterView は UITableViewController であり、詳細ビューは Web ビューです。エントリを選択すると、マスター ペインに別のテーブル ビュー (複雑さを避けるためにもう 1 つの tableviewcontroller を使用して作成) が表示され、詳細ビューにはエントリに関連するページが表示されます。このくらいはうまくいっています。

2番目のテーブルビューでも同じことが必要です。つまり、エントリを選択すると、それに応じて詳細ビューが更新されます。しかし、更新されていません。最初の tableViewController クラスで次の関数を作成しました。

-(void) display:(NSString*)theUrl
{    
    NSLog(@"%@", theUrl);
    NSURL *myUrl = [NSURL URLWithString:theUrl];

    NSURLRequest *request = [NSURLRequest requestWithURL:myUrl];
    splitViewDetailViewController *detailViewController = 
    self.detailViewController;

    detailViewController.webView.scalesPageToFit = YES;

    [detailViewController.webView loadRequest:request];
}

私は secondTableViewController からこの関数を呼び出していますが、呼び出されていますが、詳細ビューは更新されていません。secondTableViewController の didSelectRowAtIndex メソッドで、私はこれをやっています:

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

    NSString *urlString=@"http://www.google.com";

    NSURL *myUrl = [NSURL URLWithString:urlString];

    NSURLRequest *request = [NSURLRequest requestWithURL:myUrl];
    splitViewSecondViewController *secondDetailViewController = [[splitViewSecondViewController alloc] init];
    secondDetailViewController.detailViewController=self.detailViewController;

    [self.navigationController pushViewController:secondDetailViewController animated:YES];

    self.detailViewController.webView.scalesPageToFit = YES;

    [self.detailViewController.webView loadRequest:request];
}

しかし、次の実行時エラーが発生します。 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSCFConstantString stringByAppendingString:]: nil argument

4

1 に答える 1

0

TableViewController.h

@protocol TableViewControllerDelegate
-(void)display:(NSString*)theUrl :(NSInteger)index;
@end

id<tableViewControllerDelegate>_delegate;
@property(nonatomic,assign) id<tableViewControllerDelegate>_delegate;

TableViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    selectedIndex = indexPath.row;
    [self.ResultTbl reloadData];
    [_delegate display:(NSString*)theUrl :selectedIndex];
}

masterview(splitview).h

#import "tableViewController.h"

@interface MasterViewController : UIViewController <tableViewControllerDelegate>

masterview(splitview).m

-(void)display:(NSString*)theUrl :(NSInteger)index
{
    NSLog(@"%@", theUrl);
    NSURL *myUrl = [NSURL URLWithString:theUrl];

    NSURLRequest *request = [NSURLRequest requestWithURL:myUrl];
    splitViewDetailViewController *detailViewController = self.detailViewController;

    detailViewController.webView.scalesPageToFit = YES;

    [detailViewController.webView loadRequest:request];
}
于 2012-06-13T11:08:07.277 に答える