2016-10-05 3 views
0

에서의 UIViewController의 새로운 하위 뷰를 추가 나는 문제가있어.didSelectRowAtIndexPath 아이폰 OS 10

1-st - menu (UITableView) (왼쪽);

2-nd - UIView (오른쪽)를 변경하는 작업 영역 (UIViewController).

앱이 작동하고 일반적인 소셜 웹 페이지처럼 보입니다.

AppDelegate.m 모든

첫째, 나는 작업 영역 내 UIViewControllers을 초기화하기와 배열에 추가합니다. 주의 UIViewController에서

- (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; 
} 

iPadSHSidebarViewController.m

- (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를 초기화합니다. 아이폰 (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]; 
    } 
} 

모두 잘 작동합니다. 내가 대신 사용자의 데이터 페이지, 행에 두드리면 열립니다 - 아이 패드에서

은 ( iOS8의는) 모두 벌금

스크린 샷 # 1

그러나 에서 아이폰 OS 10 작동 빈 내비게이션 막대가있는 UIViewController.

(하지만 IOS 10에서는 다른 곳에서이 작업을 시도해보십시오 (탐색 모음 버튼을 탭) - 모두 잘됩니다.)

스크린 샷 # 2

나는 내비게이션 바없이 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

내가

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]; 
    }); 
addSubView

전에 지연을 추가하여 해결책을 찾기이 시간