2016-10-05 9 views
0

からのUIViewControllerで新しいサブビューを追加し、私は問題を抱えて:didSelectRowAtIndexPath iOSの10

私のiPadのメインページには、二つのビューに分離しました。

1st - メニュー(UITableView)(左側)。

2-nd - UIView(右側)を変更するワークエリア(UIViewController)。

アプリは通常のソーシャルウェブページのように動作します。

AppDelegate.m

まず第一に、私は、作業領域のための私のUIViewControllersを初期化し、配列に追加します。

メインのUIViewController iPadSHSidebarViewController.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

    NSMutableArray *vcs = [NSMutableArray array]; 

    FriendsForImport *friendsForImport = [[CoreDataHelper helperCoreDataHelper] getSocialAccountInfoByIdSocial:0 withUid:@"myUid"]; 

    SocialPageViewController *socialPageViewController = [[SocialPageViewController alloc] initWithIdSocial:0 withFriendsForImport:friendsForImport withMyAccount:1]; 

    UINavigationController *socialPageNavigationController = [[UINavigationController alloc] initWithRootViewController:socialPageViewController]; 

    NSDictionary *socialPageNavigationControllerDict0 = [NSDictionary dictionaryWithObjectsAndKeys:socialPageNavigationController, @"vc", [NSString stringWithFormat:NSLocalizedString(@"MainMenuMyPageViewController", nil)], @"title", @"111-user.png", @"image", @"1", @"notification", @"0", @"idSocial",nil]; 

    [vcs addObject:socialPageNavigationControllerDict0]; 

     .....init and add to array another...... 

    Below In this method I init main UIViewController (**iPadSHSidebarViewController**) with UIViewControllers array. 

    _sidebariPad = [[iPadSHSidebarViewController alloc] initWithArrayOfVC:vcs]; 
      self.window.rootViewController = _sidebariPad; 
} 

- (void)viewDidLoad 
{ 
    //init work area 
    _mainViewController = [[UIViewController alloc] init]; 

    //init menu 
    _menuView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width*ksliderMenuWidthKoeff, self.view.frame.size.height)]; 
    [self.view addSubview:_menuView]; 
     ..... 
    //set to work area first UIViewController from array (SocialPageViewController) 
    [self changeMain:[[viewsArray objectAtIndex:0] objectForKey:@"vc"]]; 
} 

// for changing UIViewControllers in work area 
-(void)changeMain:(UIViewController *)main 
{ 
    [_mainViewController.view removeFromSuperview]; 
    _mainViewController = main; 
    _mainViewController.view.frame=CGRectMake(_menuView.frame.size.width, 0, self.view.frame.size.width-_menuView.frame.size.width, self.view.frame.size.height); 
    [self.view addSubview:_mainViewController.view]; 
} 

// for opening selected user's page UIViewControllers in work area above all opened UIViewControllers 

-(void)setModalInMain:(UIViewController *)modal 
{ 
    modal.view.tag=countTag++; 
    [_mainViewController.view addSubview:modal.view]; 
} 

SocialPageViewControllerユーザーのページであるとするとき、アプリケーションの初期化は、まず私たちは、ワークエリアに何を参照してください。

SocialPageViewController友だちリストのUIViewTableがあります。 ユーザーがフレンドリストの行をタップすると、作業領域のUIViewControler(iPadSHSidebarViewController)メソッドsetModalInMainを使用して、選択したユーザーのデータで新しいUIViewControlerを初期化します。 iPhone(iOS8,10)で

SocialPageViewController.m

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    FriendsForImport *friendsForImport = [_listArrayForOut objectAtIndex:indexPath.row]; 

    if([friendsForImport.active intValue]==1){ 

     SocialPageViewController *socialPageViewController = [[SocialPageViewController alloc] initWithIdSocial:_idSocial withFriendsForImport:friendsForImport withMyAccount:0]; 
     socialPageViewController.delegate=self; 
     UINavigationController *socialPageNavigationController = [[UINavigationController alloc] initWithRootViewController:socialPageViewController]; 

     iPadSHSidebarViewController *ipadSHSidebarViewController=(iPadSHSidebarViewController*)XAppDelegate.window.rootViewController; 
     [ipadSHSidebarViewController setModalInMain: socialPageNavigationController]; 
    } 
} 

すべてが正常に動作します。 iPadの(iOS8)で

すべての罰金

スクリーンショット#1

しかしにiOSの10作品 - 私が代わりにユーザーのデータ・ページの行にタップすると、開くを空のUIViewControllerの白いナビゲーションバー。

(ただし、IOS 10の場合は他の場所でこの操作を行ってください(ナビゲーションバーボタンをタップしてください) - すべて正常に動作します)。

スクリーンショット#2

私はnavigationbarなしdidSelectRowAtIndexPathから開いているページをしよう - すべての作業罰金。しかし、ナビゲーションバーなしでページを開く。これはiOS10で、ちょうどdidSelectRowAtIndexPath方法で起こるのはなぜ

スクリーンショット#3

If I try open page from didSelectRowAtIndexPath without navigationbar - all work fine. But page open without navigationbar.

First what user see in work area when app init is **SocialPageViewController**.

in iOS 10 - when I tap to the row, instead of user's data page, opens the empty UIViewController with white navigation bar

答えて

0

私はaddSubView

double delayInSeconds = 0.1; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     [ipadSHSidebarViewController setModalInMain: socialPageNavigationController]; 
    }); 
前に遅延を追加することで解決策を見つける、この時間