このチュートリアルに従って、簡単なRSSリーダーアプリを作成しようとしています。
Xcode 4.3.2を使用しているため、チュートリアルを少し調整する必要がありました。すべてが機能し、すべてのRSSフィードが正常に読み込まれますが、記事をクリックして表示すると、詳細ビューコントローラーが読み込まれますが、完全に空白になります。ストーリーボードのDetailViewControllerにラベルまたはボタンを追加しようとしましたが、ロード時にこれらも表示されません。表示されるのは上部のナビゲーションバーだけです。だから私の質問は私が間違っていることですか?コードの問題ではなく、単純なセットアップの問題だと確信しています。ビューに任意のオブジェクトを追加できますが、まったく異なるViewControllerがロードされているように表示されません。どんな助けでも大歓迎です。これが私が使用しているコードです:
- (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ファイルではなく、ストーリーボードと関係がありますか?
OK_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で設定されます
ストーリーボードにプッシュセグエを設定しました。
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;
}
残念ながら、これは問題なく機能しているように見えますが、まだ空白のビューが表示されます。