我有一个splitview应用程序。 MasterView是一个UITableViewController,详细视图是Web视图。在选择条目的主窗格中,将出现另一个表视图(使用另一个tableviewcontroller创建以避免复杂性),并且详细视图显示了与该条目相关的某些页面。这样很好。

现在我也希望第二个表视图也是如此,即在选择条目时,详细信息视图应相应更新。但是它没有更新。我在第一个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

最佳答案

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

关于iphone - splitView/Objective C-无法从第二个tableViewController更新detailView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11012902/

10-09 02:19