iphone - splitView/Objective C - 无法从第二个 tableViewController 更新 detailView

标签 iphone objective-c ios xcode ipad

我有一个 splitview 应用程序。 MasterView 是一个 UITableViewController,详细 View 是 web View 。在选择条目的主 Pane 中,出现另一个 TableView (使用另一个 TableView Controller 创建以避免复杂性),详细 View 显示与该条目相关的一些页面。这一切都很好。

现在我想要第二个 TableView 也一样,即在选择一个条目时,详细 View 应该相应地更新。但它没有得到更新。我在第一个 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 调用此函数,它被调用但详细 View 未更新。 在 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];
}

但是随后出现以下运行时错误: 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** -[__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/

相关文章:

ios - 试图理解一个简单的陈述

Avenir 的 iOS Safari 字体字距调整/字母间距问题

ios - 一个 UIViewController 中的两个 UICollectionView 和两个 UICollectionViewCell

iphone - NSURLConnection、基本身份验证和 Cookie 问题

iphone - 如何让 ImagePicker 从底部开始首先显示最新的图像?

iphone - 如何实现/增强核心数据关系 getter/setter?

iOS 更改按钮图像以填满 iphone 3.5 英寸和 iphone 4 英寸的屏幕

objective-c - 如何在没有标题栏的模态窗口中强制键盘焦点

ios - Icecast 直播音频到 iPhone

iphone - 从 UITextView 中提取第一个单词