Investigué mucho en UISplitView
y no pude encontrar una manera de controlar una vista dividida cuando el maestro y el detalle tienen una vista que cambia.Delegado de UISplitViewController en un singleton
Luego encontré una forma de administrarlo con una clase singleton que es el delegado.
Mi problema es que no estoy seguro si es el camino correcto a seguir. Me preocupan reusability
y memory managment
. También tengo la sensación de que las directrices de Apple son secundarias para hacer delegados en singletons.
Esto es lo que tengo (y que realmente funciona):
// 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
Ahora la aplicación:
Este código es libre de utilizar y modificar para todos los que les resultaría viable en su proyecto :).
Soy nuevo en StackOverflow (a pesar de que he acechado durante un par de meses sin una cuenta) por lo que cada crítica es muy bien recibida.