在iPad上,您将视图控制器显示为UIModalPresentationFormSheet.这个视图控制器正在扩展UITabbarController,并有足够的控制器来自动显示“更多”标签栏按钮.点击更多按钮后,它将正确显示列表,但只要点击“编辑”,它就会显示比实际表单更大的编辑视图(在表单内部裁剪),导致内容不在视图,包括带有“完成”按钮的工具栏.解雇的唯一方法是强制退出应用程序.
为了验证它不是我的应用程序特有的东西,我启动了一个单一的视图项目,并提出了一个简单的模态视图.这个模态视图控制器扩展了UITabbarController并具有以下init方法:
- (ID)init { self = [super init]; if (self) { self.modalPresentationStyle = UIModalPresentationFormSheet; NSMutableArray *controllers = [NSMutableArray array]; for (int i = 0; i< 15; i++) { UIVIEwController *vc = [[UIVIEwController alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootVIEwController:vc]; vc.Title = [Nsstring stringWithFormat:@"vIEw %i",i]; [controllers addobject:nav]; } self.vIEwControllers = controllers; } return self;}
我也尝试将modalPresentationStyle添加到moreNavigationController而不做任何更改.
解决方法 美好的一天,dizy.你做的一个很好的挑战.这是一个解决方案,也许它有点硬核,但它的工作原理.
我已经完成了你写的 – 子类化UITabbarController并将其作为模态视图控制器呈现.并遇到同样的问题.当点击“更多”屏幕中的“编辑”按钮时,会出现UITabbarCustomizeVIEw并且它的框架不合适.
所以我做了以下几点.我已经将MyModalTabbarVC作为自己的委托并实现了tabbarController:willBeginCustomizingVIEwControllers:方法:
- (voID)tabbarController:(UITabbarController *)tabbarController willBeginCustomizingVIEwControllers:(NSArray *)vIEwControllers{ UIVIEw *modalVIEw = self.vIEw; CGRect bounds = modalVIEw.bounds; UIVIEw *customizationVIEw = [[modalVIEw subvIEws] objectAtIndex:1]; UIVIEw *customizationNavbar = [[customizationVIEw subvIEws] objectAtIndex:0]; CGRect navbarFrame = [customizationNavbar frame]; navbarFrame.size.wIDth = bounds.size.wIDth; customizationNavbar.frame = navbarFrame; customizationVIEw.frame = bounds;}
因此,当调用此方法时,已经创建了UITabbarCustomizeVIEw.并且可以手动更改错误的框架.如果您在开始时记录po [self.vIEw子视图],您将获得:
(ID) = 0x06c6a940 <__NSArrayM 0x6c6a940>(<UITransitionVIEw: 0xd744ab0; frame = (0 0; 540 571); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xd744b50>>,<UITabbarCustomizeVIEw: 0x6c5e570; frame = (0 -384; 768 1004); animations = { position=<CABasicAnimation: 0x6c569a0>; }; layer = <CALayer: 0x6c618d0>>,<UITabbar: 0xd744110; frame = (0 571; 540 49); autoresize = W+TM; layer = <CALayer: 0xd742b80>>,)
PS.此解决方案无法修复动画.正如您在日志中看到的那样,损坏的动画已经创建并收费.我希望取消它并添加一个合适的新版本不会成为问题.
总结以上是内存溢出为你收集整理的iPad UIModalPresentationFormSheet与UITabBarController的moreNavigationController编辑模式问题全部内容,希望文章能够帮你解决iPad UIModalPresentationFormSheet与UITabBarController的moreNavigationController编辑模式问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)