Ho effettuato molte ricerche su UISplitView
e non sono riuscito a trovare un modo per controllare una vista divisa quando il Master e il dettaglio hanno una vista che cambia.UISplitViewController delegato in un singleton
Quindi ho trovato un modo per gestirlo con una classe singleton che è il delegato.
Il mio problema è che non sono sicuro se sia la strada giusta da percorrere. Sono preoccupato per reusability
e memory managment
. Inoltre ho la sensazione che sia in linea con le linee guida di Apple per rendere i delegati in singleton.
Questo è quello che ho (e che funzioni):
// 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
Ora l'attuazione:
Questo codice è libero di utilizzare e modificare per tutti che avrebbe trovato praticabile in il loro progetto :).
Sono nuovo di StackOverflow (anche se sono in agguato per un paio di mesi senza un account), quindi ogni critica è caldamente benvenuta.