我一直在尝试按照本教程制作一个简单的 RSS 阅读器应用程序。
由于我使用的是 Xcode 4.3.2,因此必须对本教程进行一些调整。一切正常,它可以很好地加载所有 RSS 提要,但是当我单击一篇文章查看它时,会加载详细视图控制器,但它完全是空白的。我尝试向情节提要上的 DetailViewController 添加标签或按钮,但即使在加载时也不会出现。唯一可见的是顶部的导航栏。所以我的问题是我做错了什么?我确定这是一个简单的设置问题,而不是代码问题。事实上我可以将任何对象添加到视图中并且没有显示它几乎就像正在加载一个完全不同的视图控制器。任何帮助将不胜感激。这是我一直在使用的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
_webViewController.entry = entry;
[self.navigationController pushViewController:_webViewController animated:YES];
}
- (void)viewDidLoad
{
NSURL *url = [NSURL URLWithString:_entry.articleUrl];
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
NSLog(@"The URL is %@",url);
}
因为这段代码是从旧版本的 Xcode 改编而来的,它是否与故事板而不是单个 nib 文件有关?
好的 _webviewController 设置在 RootViewController.h
@interface RootViewController : UITableViewController <UITableViewDelegate> {
NSOperationQueue *_queue;
NSArray *_feeds;
NSMutableArray *_allEntries;
DetailViewController *_webViewController;
}
@property (retain) NSOperationQueue *queue;
@property (retain) NSArray *feeds;
@property (retain) NSMutableArray *allEntries;
@property (retain) DetailViewController *webViewController;
didselectRowAtIndex 在 RootViewController 中设置 & viewDidload 在 DetailViewController 中设置
我已经在故事板中设置了一个 push segue。
我现在已经用下面建议的方法替换了 tableView didSelectRowAtPath 方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// test segue.identifier if needed
DetailViewController *viewController = segue.destinationViewController;
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
// set properties of viewController based on selection indexPath
RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
viewController.entry = entry;
}
不幸的是,即使这似乎工作正常,我仍然得到一个空白的视图。