//

UIBarButtonItem verschijnt niet op navigation controller toolbar

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 ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Berichten van vandaag

Reageren

 

Discussietools Weergave
  #1  
Oud 19-03-10, 18:51
Thaurin's schermafbeelding
Thaurin Thaurin is offline
• iOS 2.1
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2008
Berichten: 141
Standaard 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];
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 19-03-10, 19:22
Thaurin's schermafbeelding
Thaurin Thaurin is offline
• iOS 2.1
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2008
Berichten: 141
Standaard

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];
}
Er is geen UIBarButtonItem te zien. Wat doe ik hier fout?
  #3  
Oud 19-03-10, 19:59
JWVD's schermafbeelding
JWVD JWVD is offline
• iOS 5.0
• 5.0
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jul 2008
Locatie: Renkum
Berichten: 312
Stuur een bericht via Instant Messenger naar JWVD Stuur een bericht via MSN naar JWVD
Standaard

Geen idee of het verschil maakt, maar waarom gebruik je niet initWithTitle:style:target:action:?
  #4  
Oud 19-03-10, 21:51
Thaurin's schermafbeelding
Thaurin Thaurin is offline
• iOS 2.1
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2008
Berichten: 141
Standaard

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  
Oud 19-03-10, 22:11
gekkepietje gekkepietje is offline
• iOS 4.1
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2008
Berichten: 153
Standaard

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  
Oud 19-03-10, 22:23
JWVD's schermafbeelding
JWVD JWVD is offline
• iOS 5.0
• 5.0
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jul 2008
Locatie: Renkum
Berichten: 312
Stuur een bericht via Instant Messenger naar JWVD Stuur een bericht via MSN naar JWVD
Standaard

Citaat:
Oorspronkelijk geplaatst door Thaurin Bekijk bericht
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?
Oh, pardon, niet zo goed gelezen
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  
Oud 19-03-10, 22:35
Thaurin's schermafbeelding
Thaurin Thaurin is offline
• iOS 2.1
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2008
Berichten: 141
Standaard

Citaat:
Oorspronkelijk geplaatst door gekkepietje Bekijk bericht
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.
Ik zie soms (voor mij) rare dingen gebeuren in Objective-C, maar ik kan me niet voorstellen dat dit moet uitmaken. Maar zie onder:

Citaat:
Oorspronkelijk geplaatst door JWVD Bekijk bericht
Oh, pardon, niet zo goed gelezen
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.
Je hebt inderdaad gelijk; in mijn Window-based project lukt het wel met een leftBarButtonItem. Ik had me daarin vergist, omdat ik het in mijn hoofdapp ook al had geprobeerd. Daar werkt het helaas nog steeds niet. Ik weet in ieder geval waar ik het moet zoeken en dat het een leftBarButtonItem moet zijn.

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  
Oud 20-03-10, 00:04
Thaurin's schermafbeelding
Thaurin Thaurin is offline
• iOS 2.1
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2008
Berichten: 141
Standaard

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  
Oud 22-03-10, 00:40
wubbe wubbe is offline
• iOS 5.0
• 5.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Oct 2008
Locatie: Haarlem
Berichten: 348
Standaard

Citaat:
Oorspronkelijk geplaatst door Thaurin Bekijk bericht
En met deze actie heb ik voor de prijs van een paar regels code drie files uit mijn project kunnen sodemieteren!
Ik neem aan dat dat de NIB files waren.

Een vraag: Waarom wil je dat?
__________________
Leon
[iPhone- en Java ontwikkelaar]
  #10  
Oud 22-03-10, 00:52
Thaurin's schermafbeelding
Thaurin Thaurin is offline
• iOS 2.1
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2008
Berichten: 141
Standaard

Citaat:
Oorspronkelijk geplaatst door wubbe Bekijk bericht
Ik neem aan dat dat de NIB files waren.

Een vraag: Waarom wil je dat?
Een NIB, en .m/.h files voor een ViewController. Nu maak ik gewoon direct een navigation controller in de top view controller van m'n app.

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  
Oud 22-03-10, 09:41
wubbe wubbe is offline
• iOS 5.0
• 5.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Oct 2008
Locatie: Haarlem
Berichten: 348
Standaard

OK, ik snap hem.

Maar... je kunt in de IB toch aangeven dat je table grouped style moet hebben?
  #12  
Oud 22-03-10, 10:19
Thaurin's schermafbeelding
Thaurin Thaurin is offline
• iOS 2.1
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2008
Berichten: 141
Standaard

Citaat:
Oorspronkelijk geplaatst door wubbe Bekijk bericht
OK, ik snap hem.

Maar... je kunt in de IB toch aangeven dat je table grouped style moet hebben?
Ja, dan had ik 't wat anders moeten doen. Zoals ik 't deed, ging het niet. Ik had een UIViewController NIB met daarin een UINavigationController gesleept. Als root view controller voor de navigation controller had ik een van m'n classes die van UITableViewController overerfde. In die opzet kon ik dus de tableview niet aanpassen in de NIB. UITableViewControllers maken zelf een table view als ze worden geinit, dat zal de reden wel zijn. Ik denk dat je echt een UITableView moet slepen in de NIB wil je daar de properties van kunnen aanpassen. En de tableview controller wordt geinit bij het laden van de NIB. Nu doe ik 't zelf met met initWithStyle:UITableViewStyleGrouped.

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  
Oud 23-03-10, 18:45
Whacko Whacko is offline
• iOS 7.1.2
• 5.1.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jan 2009
Berichten: 484
Standaard

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
Reageren



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

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 20:46.