UISplitViewControllerDisplayModePrimaryHidden Crashing App在iPad上

时间:2018-04-05 15:03:09

标签: ios objective-c ipad uisplitviewcontroller

我的应用程序支持仅限iPad。 我有UISplitViewController。

左侧菜单

  • UIViewController
    • UITableView
      • UITableViewCell
      • UILabel(已添加UITapGestureRecognizer)
      • UIImageView

中心视图

  • UIViewController
    • UIView

当用户点击UserName标签时,我显示弹出窗口(左侧菜单 - > Tableview - > Cell - > Label)

所以cellForRowAtIndexPath方法中的代码如下所示。

__weak LeftMenuUserTCell *weakCell = cell;
        cell.didTapProfileOption = ^{
            NSLog(@"Option Tapped");

            [self showMyProfilePopupFrom:weakCell.lblUserName inView:weakCell.lblUserName.superview];
        };

我会像这样提出popover

-(void)showMyProfilePopupFrom:(UIView *)sourceView inView:(UIView *)parentView
{
    ListViewController *listView=[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ListViewController"];
    listView.listDelegate=self;

    NSArray *optionList=@[@"My Profile",@"Change Password",@"Sign Out"];

    listView.dataArray=[optionList mutableCopy];
    listView.selectedItemIndex = -1;
    listView.listType = 1;



        listView.modalPresentationStyle = UIModalPresentationPopover;
        UIPopoverPresentationController *popover = listView.popoverPresentationController;
        listView.preferredContentSize = CGSizeMake(200, 150);
        //popover.delegate = self;
        popover.sourceView = sourceView;
        popover.sourceRect = sourceView.bounds;
        popover.permittedArrowDirections = UIPopoverArrowDirectionUp;
        [self presentViewController:listView animated:YES completion:nil];

}

直到现在一切正常。 现在我必须默认隐藏左侧菜单,所以我在AppDelegate中编写了以下代码,我正在设置UISplitViewController

self.rootSplitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;

当我点击提到的标签时,现在问题是我的应用程序崩溃。我已经检查过,当我注释掉上面一行(UISplitViewControllerDisplayModePrimaryHidden)时,我的应用程序甚至没有崩溃。

以下是崩溃日志:

  

MyApp [785:371642]无效模式'kCFRunLoopCommonModes'提供给   CFRunLoopRunSpecific - 打破   _CFRunLoopError_RunCalledWithInvalidMode进行调试。此消息仅在每次执行时出现一次。

     

MyApp [785:371642] *因未捕获的异常而终止应用   'NSInvalidArgumentException',原因:'* - [__ NSPlaceholderDictionary   initWithObjects:forKeys:count:]:尝试从中插入nil对象   对象[0]'

在iPad Air上测试(iOS 10.3.3)

0 个答案:

没有答案