- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我设置了一个非常简单的 iOS splitView Controller 项目,它有一个非常奇怪的错误。如果您以横向模式启动应用程序,请单击一个按钮以打开另一个 View ,旋转到纵向,然后返回到起始 View - 左侧的表格菜单应该不可见,但它是......奇怪的是你不能与它互动,这让我相信它不是真的存在,而是某种人工制品。
请注意,这只会在您第一次执行时发生,然后再也不会发生,直到您以横向模式重新启动应用程序。
主 View Controller :
#import "MasterViewController.h"
#import "DetailViewController.h"
@interface MasterViewController () {
NSMutableArray *_objects;
}
@property (nonatomic, strong)UITableView *menu;
@end
@implementation MasterViewController
- (void)awakeFromNib
{
self.clearsSelectionOnViewWillAppear = NO;
self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
[super awakeFromNib];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.navigationItem.leftBarButtonItem = self.editButtonItem;
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
self.navigationItem.rightBarButtonItem = addButton;
self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)insertNewObject:(id)sender
{
if (!_objects) {
_objects = [[NSMutableArray alloc] init];
}
[_objects insertObject:[NSDate date] atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
#pragma mark - Table View
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _objects.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
NSDate *object = _objects[indexPath.row];
cell.textLabel.text = [object description];
return cell;
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[_objects removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
}
}
/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
}
*/
/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the item to be re-orderable.
return YES;
}
*/
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDate *object = _objects[indexPath.row];
self.detailViewController.detailItem = object;
}
@end
#import "DetailViewController.h"
#import "StandardViewViewController.h"
@interface DetailViewController ()
@property (strong, nonatomic) UIPopoverController *masterPopoverController;
-(IBAction)buttonTapped:(id)sender;
- (void)configureView;
@end
@implementation DetailViewController
#pragma mark - Managing the detail item
- (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}
- (void)configureView
{
// Update the user interface for the detail item.
if (self.detailItem) {
self.detailDescriptionLabel.text = [self.detailItem description];
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self configureView];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Split view
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
barButtonItem.title = NSLocalizedString(@"Master", @"Master");
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = popoverController;
}
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
// Called when the view is shown again in the split view, invalidating the button and popover controller.
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
self.masterPopoverController = nil;
}
-(IBAction)buttonTapped:(id)sender
{
StandardViewViewController *sv = [[StandardViewViewController alloc]initWithNibName:@"StandardViewViewController" bundle:nil];
[self.splitViewController presentViewController:sv animated:YES completion:nil];
}
@end
最佳答案
虽然不漂亮,但解决方案建议here作品。
这是您实现解决方案的方式:
-(IBAction)buttonTapped:(id)sender
{
StandardViewViewController *sv = [[StandardViewViewController alloc] initWithNibName:nil bundle:nil];
sv.modalPresentationStyle = UIModalPresentationPageSheet; // <-- Add this
[self.splitViewController presentViewController:sv animated:YES completion:nil];
}
-(void)viewWillLayoutSubviews {
self.view.bounds = [StandardViewViewController screenBoundsForCurrentOrientation];
[super viewWillLayoutSubviews];
}
+(CGRect)screenBoundsForCurrentOrientation {
return [self screenBoundsForOrientation:[UIApplication sharedApplication].statusBarOrientation];
}
+(CGRect)screenBoundsForOrientation:(UIInterfaceOrientation)orientation {
UIScreen *screen = [UIScreen mainScreen];
CGRect fullScreenRect = screen.bounds; //implicitly in Portrait orientation.
if(orientation == UIInterfaceOrientationLandscapeRight || orientation == UIInterfaceOrientationLandscapeLeft){
CGRect temp = CGRectZero;
temp.size.width = fullScreenRect.size.height;
temp.size.height = fullScreenRect.size.width;
fullScreenRect = temp;
}
return fullScreenRect;
}
关于uisplitviewcontroller - SplitViewController BUG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16305336/
因为我刚刚开始开发 iPad 应用程序并且已经开始习惯 UISplitViewController(在 Storyboard 中)。我遇到的直接问题是,当我尝试从一个 splitViewControl
我一直在研究 iPad SDK,寻找改进我当前的 iPhone 应用程序的方法。我有几个地方我认为新的“SplitView”看起来相当不错。我的问题是是否可以使用我当前基于导航的应用程序导航到“Spl
我现在拼命地尝试了 2 个小时来找到我的代码中的一个错误,该错误导致没有显示我已经实现的 SplitViewController 。奇怪的是,没有显示编译错误,并且所有链接和依赖项似乎都是正确的。 首
我设置了一个非常简单的 iOS splitView Controller 项目,它有一个非常奇怪的错误。如果您以横向模式启动应用程序,请单击一个按钮以打开另一个 View ,旋转到纵向,然后返回到起始
多年来,我一直有一个已发布的通用应用程序,运行良好。现在,自从 iOS13 更新以来,它只是开始出现纯白屏幕。唯一的异常(exception)是如果我在 iPad 上运行它并改变设备的方向。比该应用程
在我的应用程序中(一个示例应用程序,一旦成功,将在我的应用程序中实现)我正在从我的 Appdelegate 移动到 viewController。在我的 ViewController.m 中,我正在初
你好,我正在制作通用 iOS应用程序。我用 UINavigationControllers在 iPhone 上现在我有一个“菜单”UIViewController我想从中推送到 UISplitView
在通用应用程序中,如果我使用特定于平台的功能(例如 Popover、iPad 的 SplitViewController)而不使用检查设备,会发生什么情况 if ([[UIDevice current
stackoverflow 上有几个问题可以解决这个问题,但似乎没有一个答案对我有用。我试图从详细 View 上的按钮隐藏分割 View Controller 的主视图。分割 View 的委托(del
我可能会在用户按下按钮时调用/加载 SplitViewController ??? 例如,在我的应用程序中,我有一个名为“设置”的按钮。当用户按下该按钮时,我想显示 SplitViewControll
我正在使用一个 splitViewController,它有一个主视图 Controller 和两个不同的详细 View Controller 。当应用程序加载时,第一个详细 View Control
我有一个带有 MasterViewController 和 DetailViewController 的 UISplitViewController。 在我的 MasterViewController
我的应用需要嵌套的 Split View Controller 。我需要在 MGSplitViewController 的详细 View 中呈现一个 Split View Controller 。怎么
如何在二级上实现 SplitViewController。 实际上我想要的是在登录后启动带有登录页面的应用程序。我需要 SplitViewController。 最佳答案 我就是这样做的。通过从窗口中
我正在使用 Apple 提供的 splitViewController 模板。在特定操作中,我想显示 rootViewController。不幸的是,我找不到一种方法可以(以编程方式)显示弹出框,就像
我有一个相当复杂的问题,我将尽可能详细地描述它。 我有一个 iPad 应用程序和一个 SplitviewController 作为我的主视图。在纵向模式下,SplitviewController 将
我在分割 View Controller 中有一个主从应用程序设置,它基本上是 Swift 标准代码。通过最初的主从方案,它可以按预期工作。 我想在分割 View Controller 的左侧和右侧
在 iOS 13 上,我目前在 IPAD 应用程序上使用 UISplitViewController 时遇到问题。 在 ios 13 中启动时,我的 masterViewcontroller 未加载,
我有一个项目,我使用 NavigationController 作为 SplitViewController 的详细 View 。 因此,当应用程序出现时,两个方向的一切都很好。但是,一旦我将 Vie
我很难选择显示为 Split View Controller 中的详细 View 的 View Controller 。似乎在 showDetail 后面有一些 View Controller 的默认
我是一名优秀的程序员,十分优秀!