からの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
?