我在故事板中定义了一个带有SplitViewController的iPad界面.我想将SplitViewController的委托设置为指向详细控制器,但IB不允许进行该连接.
什么都行不通.我可以设置self.splitViewController.delegate = self详细视图加载时,然后它成为没有问题的委托.但我错过了在此之前发生的任何代表电话.
对于上下文,我需要获取splitviewcontroller的委托调用,以便我可以在detailview中显示一个按钮来显示弹出窗口,这是标准做法.现在,如果应用程序以纵向方式启动,则必须将其旋转为横向,然后返回以显示按钮.
我用"普通"xib做了这个,没有问题.这似乎是一个特殊情况,即不允许在故事板中跨场景连接插座这一更普遍的问题.
我试图通过在MasterView的UINavigationController前面添加一个UITabbarController来扩展默认的Apple MasterDetail模板,所以有一个这样的结构:
UISplitViewController(Master)> UITabbarController> UINavigationController> UITableViewController
但是如果我运行App,在更改应用程序(didFinishLaunchingWithOptions)以使用正确的ViewController之后,并尝试执行ShowDetails Segue,则会在iPhone上以模态方式呈现DetailsView.另一方面,iPad版本正在按预期工作.我忘记做什么了?或者我该如何解决?
使用具有自适应UISplitViewController用户界面的通用故事板.
我想使用以下代码(来自主视图控制器)在主(主)端提供搜索控制器:
static NSString * const kCGISearchViewControllerID = @"SearchViewControllerID";
- (IBAction)searchButtonClicked:(UIBarButtonItem *)__unused sender {
SearchViewController *searchResultsController = [self.storyboard instantiateViewControllerWithIdentifier:kCGISearchViewControllerID];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
self.searchController.searchResultsUpdater = searchResultsController;
self.searchController.hidesNavigationBarDuringPresentation = NO;
[self presentViewController:self.searchController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
它最初似乎正常工作(无论起始方向):

自动旋转后出现问题(键盘仍然可见,底层内容仍然变暗,但搜索栏已消失):

旋转回横向时,搜索栏重新出现,但其宽度现在错误:

(我也尝试将搜索控制器searchBar放入其中titleView.当searchBar正确适应时,搜索结果控制器仍然看起来不正确.)
UISearchController当UI适应不断变化的大小类时,我错过了什么才能正确地呈现动画本身?
更新:
添加self.definesPresentationContext = YES;会使搜索栏/结果显示在主视图中,但搜索栏会在该导航栏下显示动画,并且不可见.另一个问题是,当它从纵向(具有状态栏)旋转回到横向时,搜索栏高度不会缩小.
uisplitviewcontroller ios ios8 uisearchcontroller adaptive-ui
我想实现与Facebook Messenger应用程序相同的流程,在主视图中有一个标签栏控制器.看到
我完全按照这个答案中的描述完成了 创建一个带有Master-detail模板的TabBar控制器?
然而!它在iPhone上无法正常工作,仅适用于iPad.在iPhone上,向后导航不起作用.细节窗格打开就像一个模态序幕,不可能向后移动.这可能是什么错误?这甚至可以用标准的uisplitviewcontroller实现吗?我已经尝试在tabbarcontroller中嵌入navigationcontroller(在主视图中将导航控制器设置为root),然后它适用于iPhone但不适用于iPad.
这可能有点挑剔,但在iPad SplitViewController设置中,有2个视图.每个视图都有一个非常小的黑色圆角.(这也可能与iPhone应用程序相同).
此舍入在下图中可见.我想要做的是删除黑色圆角,因此UI不会从底部获得这两个小凸起.有没有人这样做过,或者知道怎么做? - 肯定有可能.
希望有人之前见过这个.
谢谢
替代文字http://img19.imageshack.us/img19/7297/screenshot20100413at102.png
我有一个带有UISplitViewController的应用程序,当我在potrait模式下启动应用程序时,它缺少"Group"UIBarButtonItem.我需要转向横向模式并返回potrait以使其显示.当我以横向模式启动时它就在那里.这是一些明确的屏幕截图:
这是在纵向模式下启动应用程序的时间

从纵向模式旋转后,这是横向模式:

这是从横向模式旋转回纵向模式后:
我正在使用Xcode 6和Swift在UISplitViewController上使用仅限iPad的应用程序.该应用程序应支持iOS 7.1及更高版本.我将项目的部署目标设置为iOS 7.1,并将SDK版本保持在8.0以支持Swift.我有一个使用Xcode 6 beta 6的工作版本,但在将Xcode升级到黄金主版本后,该应用程序不再适用于iOS 7.1(模拟器和设备).
即使是由Xcode GM提供的主详细信息模板创建的空白应用程序也无法在iOS 7.1上运行.我已经在生成的空白应用程序的AppDelegate中禁用了displayModeButtonItem,因为这在iOS 7上不受支持,但应用程序在didFinishLaunchingWithOption委托方法的第一行崩溃.
代码
func application(application: UIApllication, didFinishLaunchingWithOptions: [NSObject: AnyObject]?) -> Bool {
let splitViewController = self.windows!.rootViewController as UISplitViewController
let navigationController = splitViewController.viewControllers[splitViewContoller.viewControllers.count-1] as UINavigationController
splitViewController.delegate = self
}
Run Code Online (Sandbox Code Playgroud)
导致第一行中出现错误的访问异常.
甚至可以使用Xcode 6为iOS 7编写拆分视图应用程序吗?iOS SDK 7和8之间UISplitViewController的差异很大.查看Apples SDK文档中的类引用,它看起来像是对UISplitViewController的完全重写.
编辑: 我刚刚意识到在Xcode 6 GM或Xcode 6.0.1中打开我的应用程序的故事板后,XML中的一些版本信息发生了变化.如果我还原这些更改并重新编译我的应用程序而不打开Xcode 6 GM或6.0.1中的故事板,则该应用程序在iOS 7.1中运行良好.
编辑(2014年10月21日): XCode 6.1中仍然存在问题.
我的UISplitViewController基本上就像一个魅力,除了在第一次(仅第一次!)从主表视图转换到详细视图时显示一个恼人的错误消息.
Unbalanced calls to begin/end appearance transitions for <UINavigationController: 0x160015600>.
Run Code Online (Sandbox Code Playgroud)
主视图和详细视图控制器都嵌入在一个UINavigationController.但是,只有在设置以下内容时才会出现错误(这是iPhone上逻辑行为所必需的):
class MySplitViewController: UISplitViewController, UISplitViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人能提供这个问题的解决方案,那将是非常好的,在此先感谢.
BTW:拆分视图控制器已在故事板中设置
呈现详细视图控制器的tableView:didSelectRowAtIndexPath:方法如下:
if let detailViewController = delegate as? DetailViewController {
detailViewController.navigationItem.leftItemsSupplementBackButton = true
detailViewController.navigationItem.leftBarButtonItem = splitViewController!.displayModeButtonItem()
splitViewController!.showDetailViewController(detailViewController.navigationController!, sender: self)
}
Run Code Online (Sandbox Code Playgroud) 我有一个现有的iPhone应用程序,我正在添加一个UISplitViewController.iPad部分就像一个魅力,但我有一个保证与iPhone 6(S)Plus崩溃.
设置 - 主人是UITabBarController.初始细节是带有占位符徽标视图的视图.选择对象后,将细节替换为a UITabBarController.
每当我选择一个项目并打开iPhone 6 Plus中的细节并将其从纵向(仅详细可见)旋转到横向(主人可见的位置)时,它会崩溃.使用占位符详细信息视图旋转时不会发生这种情况.
在崩溃之前,它确实调用了委托方法primaryViewControllerForExpandingSplitViewController和splitViewController(splitViewController: UISplitViewController, separateSecondaryViewControllerFromPrimaryViewController.但是,iPad上的一切正常.
我已经做了大量的搜索,只看到几个推特提到这种类型的崩溃.设置或不设置的displayModeButtonItem事情没有帮助.
我在一个新项目中重新创建了这个崩溃 - 它可以在这里下载:https: //github.com/sschale/SplitViewCrash/
崩溃日志:
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00007fff53609ff8
Exception Note: EXC_CORPSE_NOTIFY
VM Regions Near 0x7fff53609ff8:
MALLOC_TINY 00007f8405000000-00007f8405300000 [ 3072K] rw-/rwx SM=PRV
--> STACK GUARD 00007fff4fe0a000-00007fff5360a000 [ 56.0M] ---/rwx SM=NUL stack guard for thread 0
Stack 00007fff5360a000-00007fff53dff000 [ 8148K] rw-/rwx SM=COW thread 0 …Run Code Online (Sandbox Code Playgroud) 我有一个UISplitViewController,MasterViewController并DetailViewController有自己的导航控制器.
这是我的故事板:
当MasterViewController和DetailViewController都可见(iPhone 6+景观和iPad):
DetailViewController用途Detail Navigation Controller.这里的一切都很完美.
仅当DetailViewController可见时(iPhone 6+ Portrait和所有其他iPhone都是横向和纵向):
DetailViewController仍然使用Detail Navigation Controller(self.navigationController返回Detail Navigation Controller).但最重要的是,Master Navigation Controller导航栏是可见的,而不是Detail Navigation Controller导航栏.
我想DetailViewController在纵向和横向模式下为每个设备尺寸使用相同的导航栏.(主人导航栏和细节导航栏的样式不同.)
有没有办法在不声明名为hacky计算属性currentlyVisibleNavigationController或在ViewControllers之间保持引用的情况下执行此操作?
ios ×4
ipad ×4
iphone ×3
swift ×3
ios8 ×2
adaptive-ui ×1
delegates ×1
ios7 ×1
ios9 ×1
objective-c ×1
swift2 ×1
uistoryboard ×1
xcode6 ×1