UINavigationBarController discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Wie kan mij helpen, heb verschillende tutorial filmpjes gezien (oa van iphonedevcentral.org) maar krijg het niet voor elkaar om een functionerende UINavigationBarController te krijgen. Ik ...
|
Registreer | FAQ | Ledenlijst | Kalender | Berichten van vandaag | Zoeken |
#1
|
|||
|
|||
UINavigationBarController
Wie kan mij helpen, heb verschillende tutorial filmpjes gezien (oa van iphonedevcentral.org) maar krijg het niet voor elkaar om een functionerende UINavigationBarController te krijgen. Ik wil een Window Based application met een navigationbar bovenaan. Op die bar zijn 2 keuzes, Add en Edit. Als je op Add klikt moet er een nieuw view komen waar je zaken kan toevoegen. Als je op Edit druk moeten de al toegevoegde zaken te wijzigen zijn.
Wie kan me in de goede richting duwen.. |
|
|
Gesponsorde links (verdwijnt na registratie)
|
#2
|
||||
|
||||
kijk eens na de voorbeeld applicatie UICatalog. Die heeft mij veel geholpen hiermee.
|
#3
|
|||
|
|||
Had ik inmiddels al gedownload ja! Maar kan die .xib niet openen (doet het niet) dus moet het uit de code halen en daar heb ik echt nog moeite mee.
Snap de structuur nog niet helemaal. |
#4
|
||||
|
||||
Wat werkt er niet precies?
|
#5
|
|||
|
|||
|
#6
|
||||
|
||||
Een view moet je toch in een nieuwe class maken en deze daaraan koppelen of ben ik mis nu ? Ben zelf nog aan het leren, dus misschien ben ik wel verkeerd hoor.
|
#7
|
|||
|
|||
Volgens mij ook. Maar ik kan wel een nieuwe UIViewController aanmaken die een UIWindow aanmaakt waarin een UIView zit maar dan nog weet ik niet hoe ik dat plusje koppel
|
#8
|
||||
|
||||
ik ben ook nog n00b, en kan er misschien naast zitten of misschien zelfs dom overkomen , maar ik kan mij herinneren dat je ook de view als subview aan het window moet koppelen...
...maar ik kan er dus helemaal naast zitten en totaal onlogisch klinken; heb teveel gelezen / gestoeid waardoor ik nu een en ander door elkaar gooi...hoogst irritant... |
#9
|
||||
|
||||
Bij dit specifieke voorbeeld heb je niets aan de xib file. Alle schermen e.d. worden in de code aangemaakt. Gewoon proberen om een scherm aan te passen. Of zelf 1tje toe te voegen dmv het copieren van een bestaande en dan aanpassen. Terwijl je dit doet, kom je er vanzelf achter hoe het werkt. Teminste zo werkte het bij mij.
|
#10
|
|||
|
|||
Moest je voor elke nieuwe 'tip' geen dollar betalen volgens Apple?
|
#11
|
||||
|
||||
|
#12
|
||||
|
||||
ik ben nog geen officiele developer
|
#13
|
|||
|
|||
Lukt me nog niet hoor jongens. Heb geprobeerd om met de standaard project 'NavigationBar' te beginnen maar dat maakt het volgens mij alleen maar ingewikkelder.
Window based app is makkelijker denk ik. Ik open mn Xib, gooi er een view in die ik MainView noem en als het goed is moet daar dan ook een NavigationBar in. Of moet ik apart een NavigationBarController toevoegen? |
#14
|
|||
|
|||
Wie kan me even helpen. Ik heb deze tut gevolgd : Apple - Support - Discussions - [iphone]need help with ...
(onderaan) Maar nu krijg ik deze error: Snap niet zo goed wat ik fout doe. |
#15
|
||||
|
||||
heb je een @property aangemaakt in je AddViewController.h file voor addviewcontroller?
Iets in de stijl van: @Property (nonatomic, retain) UINavigationBarController *AddViewController; ? Dit is wat ik me dan zou kunnen voorstellen... EDIT: Oh!!! waarschijnlijk een typo in je AddViewController.h die die syntax error veroorzaakt waardoor de synthesize niet werkt. Laatst gewijzigd door Malork; 20-09-08 om 03:12. |
#16
|
|||
|
|||
Ik heb hem ondertussen iets aangepast. Hij compiled succesvol maar zodra ik in de simulator op het plusje druk crashed hij keihard. Ik zie iets over het hoofd... Zal mn files posten:
AddViewController.h Code:
// // AddViewController.h // Countdown // // Created by Pixxa on 9/19/08. // Copyright 2008 __MyCompanyName__. All rights reserved. // #import <UIKit/UIKit.h> @interface AddViewController : UIViewController { } @end Code:
// // AddViewController.m // Countdown // // Created by Pixxa on 9/19/08. // Copyright 2008 __MyCompanyName__. All rights reserved. // #import "AddViewController.h" @implementation AddViewController //@synthesize view; - (void)viewDidLoad { self.navigationItem.title = @"Add Item"; //self.navigationItem.rightBarButtonItem = self.ButtonItem; } /* - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; return self; } */ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview // Release anything that's not essential, such as cached data } - (void)dealloc { [super dealloc]; } @end Code:
// // RootViewController.h // Countdown // // Created by Pixxa on 9/18/08. // Copyright __MyCompanyName__ 2008. All rights reserved. // #import <UIKit/UIKit.h> #import "FruitViewController.h" #import "AddViewController.h" @interface RootViewController : UITableViewController { UINavigationController *navigationController; AddViewController *addViewController; FruitViewController *fruitView; } //@property(nonatomic, retain) AddViewController *addViewController; @property(nonatomic, retain) FruitViewController *fruitView; //@property (nonatomic, retain) UINavigationController *navigationController; - (IBAction)AddButton:(id)sender; @end Code:
// // RootViewController.m // Countdown // // Created by Pixxa on 9/18/08. // Copyright __MyCompanyName__ 2008. All rights reserved. // #import "RootViewController.h" #import "CountdownAppDelegate.h" #import "Fruit.h" #import "AddViewController.h" @interface RootViewController () @property (nonatomic, retain) UINavigationController *navigationController; @property (nonatomic, retain) AddViewController *addViewController; @end @implementation RootViewController @synthesize fruitView; @synthesize addViewController; @synthesize navigationController; - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { CountdownAppDelegate *appDelegate = (CountdownAppDelegate *)[[UIApplication sharedApplication] delegate]; return appDelegate.fruits.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; } CountdownAppDelegate *appDelegate = (CountdownAppDelegate *)[[UIApplication sharedApplication] delegate]; Fruit *f = (Fruit *)[appDelegate.fruits objectAtIndex:indexPath.row]; [cell setText:f.name]; // Set up the cell return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic CountdownAppDelegate *appDelegate = (CountdownAppDelegate *)[[UIApplication sharedApplication] delegate]; Fruit *fruit = (Fruit *)[appDelegate.fruits objectAtIndex:indexPath.row]; if(self.fruitView == nil) { FruitViewController *viewController = [[FruitViewController alloc] initWithNibName:@"FruitViewController" bundle:[NSBundle mainBundle]]; self.fruitView = viewController; [viewController release]; } self.fruitView.title = [fruit name]; [self.navigationController pushViewController:self.fruitView animated:YES]; [self.fruitView.fruitDescription setText:[fruit description]]; } - (void)viewDidLoad { [super viewDidLoad]; // Uncomment the following line to add the Edit button to the navigation bar. self.navigationItem.leftBarButtonItem = self.editButtonItem; self.title = @"Fruits"; } - (IBAction)AddButton:(id)sender { AddViewController *controller = self.addViewController; if (navigationController == nil) { UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller]; self.navigationController = navigationController; [navigationController release]; } [self.navigationController presentModalViewController:navigationController animated:YES]; [controller setEditing:YES animated:NO]; } - (AddViewController *)addViewController { // Instantiate the add view controller if necessary. if (addViewController == nil) { addViewController = [[AddViewController alloc] initWithNibName:@"AddViewController" bundle:nil]; } return addViewController; } /* - (IBAction)AddButton { [[AddViewController alloc] initWithNibName:@"AddViewController" bundle:[NSBundle mainBundle]]; [self.navigationController pushViewController:addViewController animated:YES]; [navigationController setEditing:NO animated:NO]; } */ /* // Override to support editing the list - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; } if (editingStyle == UITableViewCellEditingStyleInsert) { // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view } } */ /* // Override to support conditional editing of the list - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } */ /* // Override to support rearranging the list - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { } */ /* // Override to support conditional rearranging of the list - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the item to be re-orderable. return YES; } */ /* - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; } */ /* - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; } */ /* - (void)viewWillDisappear:(BOOL)animated { } */ /* - (void)viewDidDisappear:(BOOL)animated { } */ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview // Release anything that's not essential, such as cached data } - (void)dealloc { [super dealloc]; [addViewController dealloc]; [fruitView dealloc]; } @end CountdownAppDelegate.m Code:
// // CountdownAppDelegate.h // Countdown // // Created by Pixxa on 9/18/08. // Copyright __MyCompanyName__ 2008. All rights reserved. // #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import "AddViewController.h" @interface CountdownAppDelegate : NSObject <UIApplicationDelegate> { NSMutableArray *fruits; IBOutlet UINavigationController *navigationController; IBOutlet UIWindow *window; } @property (nonatomic, retain) UIWindow *window; @property (nonatomic, retain) UINavigationController *navigationController; @property (nonatomic, retain) NSMutableArray *fruits; @end Code:
// // CountdownAppDelegate.m // Countdown // // Created by Pixxa on 9/18/08. // Copyright __MyCompanyName__ 2008. All rights reserved. // #import "CountdownAppDelegate.h" #import "RootViewController.h" #import "Fruit.h" #import "AddViewController.h" @implementation CountdownAppDelegate @synthesize window; @synthesize navigationController; @synthesize fruits; - (void)applicationDidFinishLaunching:(UIApplication *)application { Fruit *apple =[[Fruit alloc] initWithName:@"Apple" description:@"Red Delicious are my favorite"]; Fruit *orange =[[Fruit alloc] initWithName:@"Orange" description:@"MMM... Fresh squeezed orange juice"]; Fruit *watermelon =[[Fruit alloc] initWithName:@"Watermelon" description:@"My favorite flavor of Jolly Ranchers"]; self.fruits = [[NSMutableArray alloc] initWithObjects:apple,orange,watermelon,nil]; // Configure and show the window [window addSubview:[navigationController view]]; [window makeKeyAndVisible]; } - (void)applicationWillTerminate:(UIApplication *)application { // Save data if appropriate } - (void)dealloc { [navigationController release]; [window release]; [super dealloc]; } @end Ik moet erbij zeggen dat ik nog niet alles snap en dat ik sommige stukken code uit andere sample projecten heb gebruikt, en aangepast naar mijn eigen code. Er kunnen dus misschien code instaan wat onnodig is of nergens op slaat. Hoop dat je me het dan kan uitleggen wat er niet klopt. |
#17
|
|||
|
|||
Waarschijnlijk zul je een functie moeten toe voegen die heet setEditing zodat je je tabel in de editing mode kan zetten de functie zal er dan zo ongeveer zo uit zien
Code:
-(void)setEditing:(BOOL)editing animated:(BOOL)animated{ [tableview setEditing:editing animated:YES]; } Als ik de code tags niet goed gebruik laat het mij even weten. |
#18
|
|||
|
|||
Citaat:
|
#19
|
|||
|
|||
Dat ligt eraan waar je de plus button hebt geplaatst het kan zijn dat je nu twee buttons over elkaar hebt omdat je in de rootviewcontroller een edit button toevoegt. Dus of je moet een button met een plusje zien of een button met edit erop of beide als de plus button aan de rechter kant staat.
|
#20
|
|||
|
|||
Citaat:
|
Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten) |
|
|
|