UISplitViewController EXC_BAD_ACCESS when rotated using ARC

I am using the UISplitViewController on ARC , but it seems to crash after several rotation events:

 Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x80069f69 Crashed Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libobjc.A.dylib 0x32461f78 objc_msgSend + 16 1 UIKit 0x3588b280 -[UISplitViewController _calculateDelegateHiddenMasterOrientations] + 52 2 UIKit 0x3588cca8 -[UISplitViewController setViewControllers:] + 1344 3 PUC 0x000d0a42 0x1000 + 850498 4 UIKit 0x35644ade -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 938 5 UIKit 0x356be7a4 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 152 

Also, when I launch the application, I get this error:

 Splitview controller <PUCSplitViewController: 0x36c290> is expected to have a master view controller before its used! 

What am I missing? I installed it very similar to the example project that Apple provided.

Sometimes when switching the detailed view, sometimes it crashes:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Clicked Asset Asset *asset = [items objectAtIndex:indexPath.row]; UIViewController *detailViewController = nil; // See what asset we are on if ([asset.title isEqualToString:@"News"]) { News2 *news = [[News2 alloc] initWithStyle:UITableViewStyleGrouped]; UINavigationController *newsNav = [[UINavigationController alloc] initWithRootViewController:news]; detailViewController = newsNav; } else if ([asset.title isEqualToString:@"Photos"]) { PhotosiPad *photos = [[PhotosiPad alloc] init]; UINavigationController *photosNav = [[UINavigationController alloc] initWithRootViewController:photos]; detailViewController = photosNav; } // Update the split view [PUCAppDelegate instance].mainSplitViewController.viewControllers = [NSArray arrayWithObjects:self.navigationController, detailViewController, nil]; // Dismiss the popover if it present. if (popoverController != nil) { [popoverController dismissPopoverAnimated:YES]; } }//end 

This is how I create a UISplitViewController in applicationDidFinishLoading :

 PUCSplitViewController *splitPUC = [[PUCSplitViewController alloc] init]; self.mainSplitViewController = splitPUC; [self.window addSubview:self.mainSplitViewController.view]; [self.window makeKeyAndVisible]; 

Ideas?

+6
source share
1 answer

for

 is expected to have a master view controller before its used! 

error,

you need to install the delegate AFTER you install the view controllers for the splitview controller.

Watch Use your Loaf Blog from April 6, 2012 (No, this is not mine).

+6
source

Source: https://habr.com/ru/post/910552/


All Articles