UIBarButtonItem verschijnt niet op navigation controller toolbar discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Wat doe ik hier niet goed? Want ik ben er vrij zeker van dat ik het wel goed doe. Ik init een TableViewController (ConfigFirstViewController). Daarna ...
|
Registreer | FAQ | Ledenlijst | Kalender | Berichten van vandaag | Zoeken |
#1
|
||||
|
||||
UIBarButtonItem verschijnt niet op navigation controller toolbar
Wat doe ik hier niet goed? Want ik ben er vrij zeker van dat ik het wel goed doe.
Ik init een TableViewController (ConfigFirstViewController). Daarna init een navigation controller met als root view controller deze tableview controller. Daarna voeg ik een UIBarButtonItem toe aan de toolbar van de navigation controller. De navigation controller wordt hierna in de huidige view controller gevoegd (niet in onderstaande code). De navigation controller werkt. Alleen, de UIBarButtonItem komt niet in de toolbar. Ik heb vanalles geprobeerd en volgens mij doe ik het echt goed. Enige suggesties? Code:
ConfigFirstViewController *firstViewController = [[ConfigFirstViewController alloc] initWithStyle:UITableViewStyleGrouped]; UINavigationController *viewController = [[UINavigationController alloc] initWithRootViewController:firstViewController]; UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style: UIBarButtonItemStyleBordered target: self action: @selector(backButtonPressed)]; viewController.navigationItem.backBarButtonItem = barButtonItem; [barButtonItem release]; |
|
|
Gesponsorde links (verdwijnt na registratie)
|
#2
|
||||
|
||||
Om het nog simpeler te maken, heb ik een nieuw Window-based project gemaakt en heb de applicationDidFinishLaunching method aangepast met:
Code:
- (void)applicationDidFinishLaunching:(UIApplication *)application { // Override point for customization after application launch UIViewController *navRootController = [[UIViewController alloc] init]; navRootController.title = @"NavRootController"; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 50)]; label.text = @"Hello, world!"; [navRootController.view insertSubview:label atIndex:0]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:navRootController]; UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] init]; barButtonItem.title = @"Back"; navController.navigationItem.backBarButtonItem = barButtonItem; [barButtonItem release]; [window insertSubview:navController.view atIndex:0]; [window makeKeyAndVisible]; } |
#3
|
||||
|
||||
Geen idee of het verschil maakt, maar waarom gebruik je niet initWithTitle:style:target:action:?
|
#4
|
||||
|
||||
Had ook gekund, maar het maakt niet uit. In mijn eerste post zie je dat ik de UIBarButtonItem op die manier init... met hetzelfde resultaat.
Ik deed het oorspronkelijk met een NIB. Ik voegde de UIBarButtonItem toe aan de navigation bar en dat werkte goed. Ik wil het juist met alleen code afhandelen. Hoe kan dit nou fout gaan? Laatst gewijzigd door Thaurin; 19-03-10 om 21:56. |
#5
|
|||
|
|||
Misschien eerst de navigation controller aan het window toevoegen en daarna pas de button zetten? Ik weet niet of het iets uitmaakt, maar soms zit het hem in de volgorde.
|
#6
|
||||
|
||||
Citaat:
Maar volgensmij mag je je backBarButtonItem geen selector meegeven, misschien eens proberen zonder, of kijken of die het wel doet als je hem op leftBarButtonItem of rightBarButtonItem zet. |
#7
|
||||
|
||||
Citaat:
Citaat:
In het test project gaf ik trouwens geen selector mee, omdat... het een test was. Maar ik kon zonder problemen een selector geven aan een backBarButtonItem. Of die ook werkte, kan ik je niet zeggen. Goed, verder knutselen met die left-- Laatst gewijzigd door Thaurin; 19-03-10 om 22:39. |
#8
|
||||
|
||||
Fixed it. Ik probeerde de leftBarButtonItem van de navigation controller te zetten... in plaats van de root view controller van de navigation controller. Om de een of andere reden werkte dat wel in een plain Window-based app en niet in mijn echte app. De root view controller van de navigation controller is natuurlijk de juiste plek om dat te doen.
En met deze actie heb ik voor de prijs van een paar regels code drie files uit mijn project kunnen sodemieteren! Thanks! |
#9
|
|||
|
|||
|
#10
|
||||
|
||||
Citaat:
Waarom? Minder files, minder onderhoud. Verder stelde die NIB ook weinig voor. Een view controller met een navigation controller erin gesleept. Ik vind dit netter. Daarnaast wilde ik weten hoe het zat. Door alles met code te doen, krijg je toch meer grip op hoe het werkt. Tot slot, ik kreeg iets niet voor elkaar met de NIB, namelijk hoe de root tableview van de navigation controller werd geinitialiseerd. Ik wilde die als grouped style hebben, maar init overriden wierp geen vruchten af. Door het met code te doen, heb ik meer controle over hoe zaken worden geinitialiseerd. |
#11
|
|||
|
|||
OK, ik snap hem.
Maar... je kunt in de IB toch aangeven dat je table grouped style moet hebben? |
#12
|
||||
|
||||
Citaat:
Ik had de init van de tableview controller nog geoverride om te kijken of ik zo controle had over het maken van de tableview, maar het lukte me niet. Dus daarom maar zo gedaan. Ben er ook meer tevreden over dan de NIB oplossing! Ik weet precies wat er gebeurt. EDIT: Ah, volgens wordt initWithCoder aangeroepen als de controller door de NIB wordt gemaakt (wat in mijn geval dus zo was). Dus daarom deed ie het waarschijnlijk niet. Nah ja. Laatst gewijzigd door Thaurin; 22-03-10 om 10:30. |
#13
|
|||
|
|||
ik denk dat ik weet wat er misgaat.
De viewController.navigationItem.backBarButtonItem is de button die je niet ziet? toch? Dat klopt, want anders dan je misschien denkt, is viewController.navigationItem.backBarButtonItem NIET de back knop die je op je huidige scherm ziet. MAAR de knop die de navigationController moet weergeven, als je terug wilt naar viewController. De navigationController tekent zelf altijd de "back" knoppen voor je, MITS je netjes de views op de controller pusht: [[self navigationController] pushViewController:newScreen animated:true];
__________________
Software Engineer iPhone Developer |
Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten) |
|
Soortgelijke discussies |
||||
Discussie | Auteur | Forum | Reacties | Laatste bericht |
remote icoontje verschijnt niet | RobinDeleener | iPhone Apps | 2 | 25-03-11 15:36 |
Winterboard op iPhone 3g Verschijnt niet | BoBsTaH_88 | Archief | 8 | 18-11-09 22:21 |
Wallpaper verschijnt niet??? | maatie | Jailbreak apps en thema's | 7 | 14-07-09 11:41 |
|
|