[projet] Poker Manager

Nebuchad34Nebuchad34 Membre
juillet 2009 modifié dans Vos applications #1
En parallèle de la version Mac de Poker Manager, je travaille actuellement à  une version iPhone. Celle-ci est déjà  bien abouti, et je souhaiterais avoir vos avis avant de continuer. Si quelque chose vous choque ou si une fonction importante vous semble manquer, merci de me le signaler.

(A noter que les défauts graphiques qui apparaissent lors du "flip" de l'écran de jeu sont dus au simulateur, sur device c'est parfait).
http://www.cocoatreeapplications.com/_videos/Poker%20Manager%20for%20iPhone.mov

Par ailleurs, j'aimerais vous soumettre un bug dont je ne sais pas si il est du à  mon app ou à  un bug du SDK 3.0 ou du firmware 3.0.
De temps en temps, de manière très aléatoire et sans raison apparente, lorsque je retourne sur un viewcontroller en cliquant sur le bouton retour du navigationController, la tableView du dit viewcontroller n'appelle plus le "didselectrow" quand on clique sur une cell, du coup je ne peux plus naviguer vers d'autres view controllers. C'est très bizarre. Quelqu'un a-t-il déjà  rencontré ce problème ?

Réponses

  • muqaddarmuqaddar Administrateur
    03:19 modifié #2
    1) Vraiment impressionnante et très propre ta vidéo de démo. Tout comme le logiciel Mac. Et tout comme ton site Internet. Oui, un seul mot : propre !

    2) 34 de nebuchad34 est ton âge ou bien ton département ?

    3) Pour ton bug, j'ai le même mécanisme dans une App sur le 3.0, et pour ma part, pas de bug. Il faudra p-e nous montrer un peu de code.
  • Nebuchad34Nebuchad34 Membre
    juin 2009 modifié #3
    1) Merci, je fait tout pour que ce le soit, propre...  :)

    2) Mon département, car je n'ai que 20 ans (21 très très bientôt...)

    3) Je veux bien, mais quoi ? j'ai testé avec un NSLog et c'est vraiment le didSelectRow qui n'est tout simplement pas appelé. Par contre j'ai remarqué que ça le fait toujours sur mon "FirstViewController" qui est le premier viewController de la pile du NavigationController...

    C'est une subclass de UIViewController, avec protocoles UITableViewDataSource et UITableViewDelegate (je n'ai pas directement sous classé une UITableViewController pour pouvoir modifier le background de la tableView et sa position).

    Voilà  un peu le code, mais je sais pas vraiment si ça peut aider :


    <br />FirstViewController.h<br /><br />#import &lt;UIKit/UIKit.h&gt;<br /><br /><br />@interface FirstViewController : UIViewController &lt;UITableViewDelegate, UITableViewDataSource, UIAlertViewDelegate&gt; {<br /><br />	IBOutlet UITableView *tableView;<br />}<br /><br />@property (nonatomic, retain) UITableView *tableView;<br /><br />- (IBAction)aboutPokerManager:(id)sender;<br />- (IBAction)newTournament:(id)sender;<br />- (void)pushTournamentSettings:(NSNotification*)notification;<br />- (void)resetTournamentSettings;<br /><br />@end<br />
    


    <br />FirstViewController.m<br /><br />#import &quot;FirstViewController.h&quot;<br />#import &quot;AboutController.h&quot;<br />#import &quot;Tournament.h&quot;<br />#import &quot;OpenPanelController.h&quot;<br />#import &quot;SavePanelController.h&quot;<br />#import &quot;SettingsViewController.h&quot;<br /><br /><br />@implementation FirstViewController<br /><br />@synthesize tableView;<br /><br />- (void)viewDidLoad {<br />&nbsp; &nbsp; [super viewDidLoad];<br />	<br />	self.tableView.backgroundColor = [UIColor clearColor];<br />	self.tableView.scrollEnabled = NO;<br />	<br />	UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@&quot;About&quot;,nil) style:UIBarButtonItemStyleBordered target:self action:@selector(aboutPokerManager:)];<br />&nbsp; &nbsp; self.navigationItem.rightBarButtonItem = buttonItem;<br />	[buttonItem release];<br />	<br />	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pushTournamentSettings:) name:@&quot;Tournament Loaded&quot; object:nil];<br />	<br />}<br /><br />- (void)pushTournamentSettings:(NSNotification*)notification {<br />	SettingsViewController *settings = [[SettingsViewController alloc] initWithNibName:@&quot;SettingsView&quot; bundle:nil];<br />	[self.navigationController pushViewController:settings animated:YES];<br />	[settings release];<br />}<br /><br />- (IBAction)aboutPokerManager:(id)sender<br />{<br />	AboutController *aboutController = [[AboutController alloc] initWithNibName:@&quot;About&quot; bundle:nil];<br />	[self presentModalViewController:aboutController animated:YES];<br />	[aboutController release];<br />}<br /><br />- (IBAction)newTournament:(id)sender {<br />	<br />	//test if a tournament is currently loaded by checking the number of round <br />	if ([[Tournament sharedTournament].roundsArray count] == 0)<br />		[self resetTournamentSettings];<br />	else {<br />		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@&quot;New Tournament?&quot;,nil) message:NSLocalizedString(@&quot;Are you sure you want to create a new Tournament? This will erase the current parameters.&quot;,nil) delegate:self cancelButtonTitle:NSLocalizedString(@&quot;No&quot;,nil) otherButtonTitles:NSLocalizedString(@&quot;Yes&quot;,nil),nil];<br />		[alert show];<br />	}<br />	<br />}<br /><br />- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {<br />	if (buttonIndex == 1)<br />		[self resetTournamentSettings];<br />}<br /><br />- (void)resetTournamentSettings {<br />	[[Tournament sharedTournament] reset];<br />	[self pushTournamentSettings:nil];<br />}<br /><br />- (NSInteger)numberOfSectionsInTableView:(UITableView *)tView {<br />	return 1;<br />}<br /><br />- (NSInteger)tableView:(UITableView *)tView numberOfRowsInSection:(NSInteger)section {<br /><br />	return 3;<br />}<br /><br />- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath {<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; static NSString *CellIdentifier = @&quot;Cell&quot;;<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];<br />&nbsp; &nbsp; if (cell == nil) {<br />		cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];<br />		cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;<br />		cell.selectionStyle = UITableViewCellSelectionStyleGray;<br />&nbsp; &nbsp; }<br />	<br />	switch (indexPath.row) {<br />		case 0:<br />			cell.textLabel.text = NSLocalizedString(@&quot;Open existing tournament&quot;,nil);<br />			cell.imageView.image = [UIImage imageNamed:@&quot;openIcon.png&quot;];<br />			break;<br />		case 1:<br />			cell.textLabel.text = NSLocalizedString(@&quot;Save this tournament&quot;,nil);<br />			cell.imageView.image = [UIImage imageNamed:@&quot;saveIcon.png&quot;];<br />			break;<br />		case 2:<br />			cell.textLabel.text = NSLocalizedString(@&quot;Tournament Parameters&quot;,nil);<br />			cell.imageView.image = [UIImage imageNamed:@&quot;parametersIcon.png&quot;];<br />			break;<br />		default:<br />			break;<br />	}<br />	<br />&nbsp; &nbsp; return cell;<br />}<br /><br />- (void)tableView:(UITableView *)tView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {<br />		<br />	NSLog(@&quot;DidSelectRow appellé&quot;);<br />		switch (indexPath.row) {<br />			case 0:<br />				NSLog(@&quot;&quot;);<br />				OpenPanelController *openPanel = [[OpenPanelController alloc] initWithStyle:UITableViewStylePlain];<br />				openPanel.title = NSLocalizedString(@&quot;Load&quot;,nil);<br />				[self.navigationController pushViewController:openPanel animated:YES];<br />				[openPanel release];<br />				break;<br />			case 1:<br />				NSLog(@&quot;&quot;);<br />				SavePanelController *savePanel = [[SavePanelController alloc] initWithNibName:@&quot;savePanel&quot; bundle:nil];<br />				savePanel.title = NSLocalizedString(@&quot;Save As&quot;,nil);<br />				[self.navigationController pushViewController:savePanel animated:YES];<br />				[savePanel release];<br />				break;<br />			case 2:<br />				NSLog(@&quot;&quot;);<br />				SettingsViewController *settings = [[SettingsViewController alloc] initWithNibName:@&quot;SettingsView&quot; bundle:nil];<br />				[self.navigationController pushViewController:settings animated:YES];<br />				[settings release];<br />				break;<br />			default:<br />				break;<br />		}<br />	<br />	[tableView deselectRowAtIndexPath:indexPath	animated:YES];<br />}<br /><br /><br />- (void)didReceiveMemoryWarning {<br />&nbsp; &nbsp; [super didReceiveMemoryWarning]; // Releases the view if it doesn&#39;t have a superview<br />&nbsp; &nbsp; // Release anything that&#39;s not essential, such as cached data<br />}<br /><br /><br />- (void)dealloc {<br />&nbsp; &nbsp; [super dealloc];<br />}<br /><br />
    



    (Au fait, ça vous le fait aussi le bug avec le switch ? je ne peux pas faire d'allocation sur la première ligne d'un "case", le compilteur gueule, mais si je met n'importe quoi, genre un NSLog, ben ça marche...)
  • muqaddarmuqaddar Administrateur
    03:19 modifié #4
    Pour le 34, je demandais parce qu'on est dans le même département, il va falloir aller boire un coup ensemble dans pas longtemps. Je suis à  Montpellier. ;)

    Pour ton bug, as-tu essayé à  tout hasard sans switch (if...else) ?
  • Nebuchad34Nebuchad34 Membre
    03:19 modifié #5
    Hé hé , je suis tout près, Sète !
    Non je n'ai pas essayé avec des if else, je testerai ça plus tard pour voir si ça marche.
  • muqaddarmuqaddar Administrateur
    03:19 modifié #6
    dans 1244481555:

    Hé hé , je suis tout près, Sète !
    Non je n'ai pas essayé avec des if else, je testerai ça plus tard pour voir si ça marche.


    Je t'ai dit ça car je crois me souvenir avoir eu des soucis avec un switch dans des méthodes delegate ou datasource de tableView... mais c'est vraiment un lointain souvenir...
  • Nebuchad34Nebuchad34 Membre
    03:19 modifié #7
    Je vais remplacer par des ifs et je verrai ce que ça donne. Mais je trouve ça dommage, c'est tellement plus propre un switch. Comme dirais ma prof de C, "à  bas les forêts d'ifs" (admirez le jeu de mot !)
  • muqaddarmuqaddar Administrateur
    03:19 modifié #8
    dans 1244483730:

    Je vais remplacer par des ifs et je verrai ce que ça donne. Mais je trouve ça dommage, c'est tellement plus propre un switch. Comme dirais ma prof de C, "à  bas les forêts d'ifs" (admirez le jeu de mot !)


    Oui, en même temps, ça serait bizarre si ça vient de ça... car je vois pas le rapport. ;)
  • Nebuchad34Nebuchad34 Membre
    03:19 modifié #9
    Bon, curieusement sans toucher au code le bug semble avoir disparu après installationdu sdk 3.0 GM et du firmware 3.0 GM. Espérons que c t juste un bug lié a la beta...

    Je vais peaufiner mon code, terminer ce qui manque et comme ça je pourrai très bientôt soumettre l'application pour lappstore ... Vivement !
  • muqaddarmuqaddar Administrateur
    03:19 modifié #10
    Je sais que j'avais eu un bug similaire comme je disais alors c'était p-e sous la beta aussi, mais je me souviens plus. ;)
  • Nebuchad34Nebuchad34 Membre
    juillet 2009 modifié #11
    Bien bien, le bug n'étant plus réapparu depuis la 3.0 finale, j'ai déduit qu'il était bien lié à  un de la beta, OS ou SDK je l'ignore mais peut importe.

    J'ai soumis l'appli sur iTunesConnect la semaine dernière. Je suis "in Review" pour un durée indéterminée... Personne ne semble obtenir les mêmes délais de validation.

    Wait and see !  8--)


    PS: et ce café alors ? Moi je suis en vacance, et j'ai un cadeau à  faire pour un amis donc je risque de monter sur Montpellier prochainement. Tu n'as qu'à  me filer tes dispos par MP on s'arrangera pour un OSXCafé. Et si il y a d'autres membres montpelliérains interessés qu'ils se manifestent !
Connectez-vous ou Inscrivez-vous pour répondre.