# Quelques question de dev sur iphone/SDK



## badro (9 Février 2010)

Hello

je me lance dans la programmation sur iphone pour un projet scolaire
je ne sais pas si il est mieux de poster ici ou sur la section iphone pour les questions qui vont suivre, donc désolé...

jai principalement deux questions.
j'ai à peu pres saisi le concept des fichiers .xib, le fonctionnement de base etc à partir des différents tutoriaux et je me lance sur une appli avec une tab bar en bas.

1) dans un dossier d'un fichier .xib, quelles sont les différences fondamentales entre une _view_ et une _window_?

2) par ailleurs, dans mon appli je serai à manipuler des listes d'objets (avec effet lorsque l'on clique dessus), et par exemple à pouvoir supprimer des objets d'une liste, transferer un objet d'une liste à une autre (qui correspondrait chacune à une des 4 boutosn du tab bar par exemple)

La liste des objets est implémentée via une tableview dans le fichier .xib, un peu de cette façon: 







ou encore:

http://developer.apple.com/iphone/l...TableView_iPhone/Art/tvcellstyle_subtitle.jpg

Savez vous comment implémenter l'ensemble des objets pouvant potentiellement appartenir à une liste (tableview) et les enlever/ajouter etc??
Si vous avez également de bons tutoriaux sur le sujet, je crache pas dessus.

en esperant avoir été clair
merci!

Rom


----------



## tatouille (10 Février 2010)

Savez vous comment implémenter l'ensemble des objets pouvant potentiellement appartenir à une liste (tableview) et les enlever/ajouter etc??

oui

http://developer.apple.com/iphone/library/samplecode/TableViewSuite/index.html


----------



## Céroce (10 Février 2010)

badro a dit:


> 1) dans un dossier d'un fichier .xib, quelles sont les différences fondamentales entre une _view_ et une _window_?


Une fenêtre contient des vues. Une vue contient d'autres vues. D'ailleurs toute fenêtre possède une _contentView_.
Pendant qu'on y est: un XIB = une vue
cela pour pouvoir la charger et la gérer avec un (NS/UI)ViewController.


----------



## badro (10 Février 2010)

Céroce a dit:


> Une fenêtre contient des vues. Une vue contient d'autres vues. D'ailleurs toute fenêtre possède une _contentView_.
> Pendant qu'on y est: un XIB = une vue
> cela pour pouvoir la charger et la gérer avec un (NS/UI)ViewController.




merci, c'est déjà plus clair!


----------



## tatouille (14 Février 2010)

Céroce a dit:


> Une fenêtre contient des vues. Une vue contient d'autres vues. D'ailleurs toute fenêtre possède une _contentView_.
> Pendant qu'on y est: un XIB = une vue
> cela pour pouvoir la charger et la gérer avec un (NS/UI)ViewController.



sachant _qu'une contentView_ et une vue particuliere, il est mal venue d'overloader a cet endroit, e.g on prefere travailler avec des subviews contenues dans cette master vue, pourquoi?, c'est lié a la "chaine des responders", la _contentView_ est l'endroit ou "s'initialise" la chaine 'locale' heritee de la window (global listener), donc overloader une contentView peu fortement compromettre le comportement de l'application. (a part comme toujours si on sait ce que l'on fait et pour de bonnes raisons)

mais ce n'est pas seulement lié a Cocoa, avec d'autres toolkits c'est exactement la meme chose, la chaine d'evenements et plus ou moins traitee de la meme maniere, mais c'est trop souvant une question que l'on retrouve sur les forums avec des gas qui viennent chialer comme des gros benets: ca marche pas, et 99.9% des cas: j'ai overloadé la "ou je ne devrais pas car je ne comprend pas globalement comment tout cela fonctionne".

donc le meilleur exemple a donne serait: as tu deja fait un simple daemon CLI qui utilise des signal handlers, si non, tu devrais commencer par cela avant de t'attaquer a l'interface graphique.

et c'est en quoi carbon est interressant et bien plus didactique  pour les beginners meme si "plus ou moins deprecated", cela te pousse a construire cette contentView et a installer cette chaine d'evenements locaux herites de la fenetre, et de comprendre quand tu veux jouer avec les drag and drop que tout cela doit etre fait de maniere propre et logique, et que tu dois avoir un meta-container jouant le role d'event proxy/dispatcher.


----------

