Questo è quello che sto cercando di realizzare: NB: anche con un titolo al controller. Apparirà barCome sottoclasse UINavigationBar correttamente utilizzando anche l'aspetto
- Questa navigazione su circa 10 controller di vista -:
Alcune informazioni aggiuntive.
- Non fa parte di un controller di navigazione, come non richiesto.
- Il pulsante a sinistra è statico (sarà sempre sulla barra di navigazione).
- Il pulsante destro non è statico e non esisterà o sarà diverso sui diversi controller di visualizzazione.
- Il pulsante sinistra funge da menù a scorrimento (vale a dire le diapositive di menu nel sotto da sinistra)
- sto usando storyboard nel setup
Domanda Qual è il modo corretto per raggiungere questo obiettivo?
Codice esistente ho cercato di attuare questo, ma posso ottenere solo uno o l'altro dei pulsanti, senza un titolo di lavoro. Per implementare lo sfondo ho usato le API apparizione come di seguito:
didFinishLaunching ...
// Custom Navigation Bar appearance setup
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], UITextAttributeTextColor,
[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5],UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, 1)],
UITextAttributeTextShadowOffset,nil]];
// Used to deal with the rotation of the nav bar when implemented outside of Navigation Controller
[[UINavigationBar appearance] setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight];
[[UINavigationBar appearance] setContentMode:UIViewContentModeScaleAspectFit];
// Set the background image
UIImage *imageBg = [[UIImage imageNamed: @"mainNavBar"] resizableImageWithCapInsets:UIEdgeInsetsMake(0,5,0,5)];
[[UINavigationBar appearance] setBackgroundImage:imageBg forBarMetrics:UIBarMetricsDefault];
// Used to push the title down slightly when in Landscape and NavBar outside of Navigation Controller
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:2 forBarMetrics:UIBarMetricsLandscapePhone];
Ho poi sottoclasse UINavigationBar per la creazione tasto sinistro con il seguente: sottoclasse di UINavigationBar: awakeFromNib
Quindi all'interno dello storyboard aggiungo una barra di navigazione al VC in questione e al collegamento alla sottoclasse corretta. Aggiungo inoltre un elemento pulsante aggiuntivo alla barra di navigazione nello storyboard per quel controller e il collegamento a una presa. Poi all'interno del VC provo ad aggiornare il titolo e tasto destro con il qui sotto:
View Controller che contiene la sottoclasse barra di navigazione: viewDidLoad
// Set VC Title for NavBar
self.title = NSLocalizedString(@"NavBarHomeTitle", @"Navigation Bar - Home page title");
// Setup the right navigation bar item
UIImage *addImage = [UIImage imageNamed:@"addGameButton"];
UIButton *addButton = [UIButton buttonWithType:UIButtonTypeCustom];
[addButton setFrame:CGRectMake(0, 0, addImage.size.width, addImage.size.height)];
[addButton setBackgroundImage:addImage forState:UIControlStateNormal];
[addButton addTarget:self action:@selector(addGameButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.rightBarButtonItem setCustomView:addButton];
Il risultato è una barra di navigazione con solo la sinistra pulsante. Ora credo che questo sia dovuto al codice awakeFromNib sopra alloc init un nuovo UINavigationItem quindi non posso controllare il titolo e aggiungervi un pulsante. Come posso completare questo? È questo l'approccio migliore o ci sono altri? Non riesco a vedere alcun tutorial approfondito su come affrontarlo.
grazie, potresti fornire un po 'più di informazioni su come realizzare questo per favore? Capisco la sottoclasse del controller di navigazione, ma non sono sicuro su come impostare gli elementi insieme a '..può specificare qualsiasi elemento del pulsante della barra di destra che richiede' ... per ogni VC? – StuartM
qualsiasi altra informazione che potresti fornire su questo per favore? – StuartM
Penso che il problema con questa rotta sia che ho circa 10 controller di vista che dovrebbero essere nei propri controller di navigazione? O intendi avere l'unico controller di navigazione e spingere ogni volta un nuovo controller di visualizzazione radice? – StuartM