에서의 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?