Я провел много исследований по UISplitView
и не смог найти способ управления разделенным представлением, когда изменяется представление мастера и детали.Делегат UISplitViewController в одноэлементном
Тогда я нашел способ управлять им с помощью одноэлементного класса, который является делегатом.
Моя проблема в том, что я не уверен, что это правильный путь. Меня беспокоят reusability
и memory managment
. Также у меня такое чувство, что руководство Apple должно делать делегаты в одиночных играх.
Это то, что у меня есть (и это на самом деле работает):
// SharedSplitViewDelegate.h
/* In the detail view controllers:
// in the initial detail view controller
- (void)awakeFromNib
{
[super awakeFromNib];
// needs to be here, otherwise if it's booted in portrait the button is not set
self.splitViewController.delegate = [SharedSplitViewDelegate initSharedSplitViewDelegate];
}
// shared between all detail view controllers
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
SharedSplitViewDelegate *rotationHandler = [SharedSplitViewDelegate initSharedSplitViewDelegate];
[self.toolbar setItems:[rotationHandler processButtonArray:self.toolbar.items] animated:YES];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
*/
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface SharedSplitViewDelegate : NSObject <UISplitViewControllerDelegate>
+ (id)initSharedSplitViewDelegate; // returns the singleton class instance
- (NSArray *)processButtonArray:(NSArray *)array; // Adds and removes the button from the toolbar array. Returns the modified array.
@end
Теперь реализация:
Этот код может свободно использовать и модифицировать для всех, кто нашел бы его жизнеспособным в их проект :).
Я новичок в StackOverflow (даже если я скрывался в течение пары месяцев без учетной записи), поэтому каждая критика тепло приветствуется.