詳細ビューを変更すると iPad アプリがクラッシュします。問題の原因となっているコード行を特定するために、例外ブレークポイントを設定しました。かなり散発的に発生しているように見えるので、実際に何が起こっているのかわかりません。助言がありますか?
たとえば、次の行でクラッシュしました。
self.splitViewController.viewControllers = details;
マスター ビュー コントローラーの didSelectRowAtIndexPath メソッドで
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0)
{
KFBDetailViewController *detailViewController = [[KFBDetailViewController alloc] initWithNibName:@"KFBDetailViewController_iPad" bundle:nil];
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
NSMutableArray *details = [self.splitViewController.viewControllers mutableCopy];
[details replaceObjectAtIndex:1 withObject:detailNavigationController];
self.splitViewController.viewControllers = details;
KFBAppDelegate *appDelegate = (KFBAppDelegate *)[[UIApplication sharedApplication]delegate];
appDelegate.window.rootViewController = self.splitViewController;
}
ここでも別のビューでそれを行いました:
appDelegate.splitViewController.viewControllers = details;
そのための didSelectRowAtIndexPath は次のとおりです。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableArray *details = [self.splitViewController.viewControllers mutableCopy];
UINavigationController *detailNav = [[UINavigationController alloc]initWithRootViewController:webViewController];
[details replaceObjectAtIndex:1 withObject:detailNav];
KFBAppDelegate *appDelegate = (KFBAppDelegate *)[[UIApplication sharedApplication]delegate];
appDelegate.splitViewController.viewControllers = details;
appDelegate.window.rootViewController = self.splitViewController;
appDelegate.splitViewController.delegate = webViewController;
[appDelegate.splitViewController viewWillAppear:YES];
// Grab the selected item
RSSItem *entry = [[channel items]objectAtIndex:[indexPath row]];
NSLog(@"Channel Items: %@", [[channel items]objectAtIndex:[indexPath row]]);
// Construct a URL with the link string of the item
NSURL *url = [NSURL URLWithString:[entry link]];
NSLog(@"Link: %@", [entry link]);
// Construct a request object with that URL
NSURLRequest *req = [NSURLRequest requestWithURL:url];
NSLog(@"URL: %@", url);
// Load the request into the web view
[[webViewController webView]loadRequest:req];
webViewController.hackyURL = url;
NSLog(@"Request: %@", req);
// Set the title of the web view controller's navigation item
[[webViewController navigationItem]setTitle:[entry title]];
NSLog(@"Title: %@", [entry title]);
}
編集:マスタービューコントローラーテーブルビューの最初の行を選択して最初の詳細ビューを表示し、別の行を選択して別のコンテンツを表示すると、アプリがクラッシュするようです。どの時点でも最初の行を選択しなければ、すべて正常に機能します。