Maison > Article > développement back-end > Partage de matériel vidéo principal Shangxuetang iOS
"Tutoriel vidéo élémentaire Shangxuetang iOS" est l'ensemble complet de didacticiels vidéo de Shangxuetang sur le langage Objective-C, de l'introduction de base à la maîtrise avancée. Objective-C est un langage essentiel pour le développement iOS. Le cours fournira une couverture approfondie d'Objective. -Langage C. Explication détaillée, expliquant principalement la syntaxe de base d'Objective-C, les idées de programmation orientée objet, l'encapsulation (déclaration et implémentation de classes, méthodes getter et setter, propriétés), la gestion de la mémoire, l'héritage, le polymorphisme, la classification, le protocole, bloc, NSNumber, caractères String, tableau, dictionnaire, date, gestion de fichiers, copie, etc.
Adresse de lecture vidéo : http://www.php.cn/course/572.html
En cours de développer IOS Difficultés dans :
1. En langage rapide ? et! Question
J'ai consulté de nombreuses pages Web utiles sur Internet, mais elles avaient toutes des opinions différentes et j'étais confuse. Heureusement, une page Web a été assez claire.
Pour ajouter ma compréhension personnelle, le langage rapide semble simple et élégant, mais en fait, il cache de nombreux mystères. Pourquoi l'utiliser ? et! , le but est de rendre le code plus clair et de fournir au compilateur plus d'indices pour trouver plus d'erreurs potentielles. Il s'agit d'un langage publié par Apple, qui correspond au caractère d'Apple. Il vous oblige à clarifier les choses avant d'écrire du code, plutôt que de laisser de vagues problèmes au compilateur pour prendre des décisions.
2. La logique de la vue table
Le système iOS n'étant pas open source, nous devons installer les routines prédéterminées du système pour implémenter la fonction table. Il y a plusieurs points clés. Le premier concerne ses deux agents, dont l'un est chargé de fournir des données. Les deux fonctions d'interface les plus importantes sont celles qui indiquent au système le nombre de lignes. table, et la seconde consiste à indiquer au système combien de lignes il y a dans le tableau. Il indique simplement au système quelles sont les données de chaque ligne. La seconde sera appelée plusieurs fois. Supposons qu'il y ait 10 lignes dans une page, alors cette fonction d'interface sera appelée 10 fois. Mais pas plus d'une page, car le système ne demandera que les données de la page actuellement consultée par l'utilisateur. S'il y a 100 éléments de données dans le tableau, celui-ci est alors mis en œuvre en supprimant les anciennes données et en remplissant les nouvelles données pendant le processus de défilement continu.
Il s'agit d'un proxy pour la vue, et l'autre proxy est pour le contrôleur, ce que fait le programme lorsque l'utilisateur clique sur un élément du tableau. Le plus couramment utilisé ici est la fonction d'interface didSelected. Les développeurs n'ont qu'à écrire ici leur propre code d'implémentation. Faites attention à ne pas écrire dans didDeselected. Les noms de fonctions ici sont faciles à confondre. Deselected est l'interface appelée lorsqu'un élément passe de sélectionné à non sélectionné. Quand j’ai écrit ceci pour la première fois, j’avais toujours l’impression que quelque chose n’allait pas, mais je l’ai découvert plus tard.
Lors de l'utilisation du prototype de type client, comment accéder à l'objet étiquette à l'intérieur ? L'utilisation de balises.
Un exemple de tableau courant. Les cellules du tableau n'ont qu'un maximum de 2 étiquettes, mais je dois mettre 5 étiquettes dans mon projet Alors, comment exploiter ces étiquettes dans le code ? Étant donné que l'interface est extraite dans IB, les étiquettes de la cellule ne peuvent pas être extraites dans le code via ctrl-glisser. Plus tard, j'ai vu un exemple de définition d'une valeur de balise pour chaque étiquette, puis d'utilisation de viewByTag
UILabel *name = [cell viewWithTag:TAG_NAME]; UILabel *singer = [cell viewWithTag:TAG_SINGER]; UILabel *code = [cell viewWithTag:TAG_CODE]; UILabel *lang = [cell viewWithTag:TAG_LANG]; UILabel *type = [cell viewWithTag:TAG_TYPE];
dans le code de cette façon, l'étiquette correspondante peut être obtenue.
Plus tard, j'ai appris par hasard qu'il est toujours accessible directement, mais c'est un peu plus gênant. Il s'agit d'abord de définir la cellule avec une classe, puis de créer manuellement l'instruction label dans l'interface. cette fois, vous pouvez tirer le fil du storyboard vers la vue tableau.
Cette question est abordée sur cette page.
Une mauvaise configuration de la table peut facilement provoquer le crash de l'application, et vous verrez souvent :
Crash à cet endroit : AppDelegate : UIResponder, UIApplicationDelegate
Les informations affichées par debug est :
*** Application terminée en raison d'une exception non interceptée 'NSInvalidArgumentException', raison: '-[UINavigationItem tableView:numberOfRowsInSection:]: sélecteur non reconnu envoyé à l'instance 0x7fd9d1760d70'
La raison en est en fait que j'ai vu dans le storyboard que la source de données de la vue tableau n'était pas associée, j'ai donc moi-même associé les données à la table. Souvent, ce type de crash signifie que la source de données associée est incorrecte, vous pouvez donc d'abord essayer de la déconnecter. D'après ma compréhension, comme la couche inférieure n'est pas visible, je ne peux que deviner qu'elle est associée à celle-ci et libère l'autre. En conséquence, l'objet utile ne peut pas être trouvé, provoquant un crash du système. C'est pourquoi de nombreux joueurs expérimentés n'aiment pas utiliser un tableau de stratégie, car il est difficile à contrôler et certaines choses cachées sont difficiles à trouver. Bien qu'il soit un peu plus difficile d'utiliser du code pour implémenter la structure de l'interface, c'est mieux que de savoir suffisamment que ce sera ainsi qu'il sera écrit. A ce stade, je dois encore m'appuyer sur des outils graphiques. L'un des inconvénients du graphisme est que les storyboards des deux projets ne sont pas comparables. Il y a eu quelques exemples où j'ai suivi le tutoriel étape par étape, mais quelque chose s'est mal passé, mais. le professeur de téléchargement a fait du bon travail. Le projet est normal, et il n'y a aucune différence dans la comparaison des codes. Cependant, les différences dans le storyboard sont si grandes qu'il n'y a aucun indice. l'écrasement direct des fichiers de l'autre partie par les vôtres est plein d'erreurs.
En général, mes compétences ne sont pas assez approfondies. À l’avenir, nous devrons poser en profondeur des bases solides.
3. La logique de la barre de recherche
Dans le passé, les objets tels que la barre de recherche et l'affichage de la recherche étaient séparés. Plus tard, Apple a fourni une solution intégrée et a également intégré les algorithmes de recherche. sont également encapsulés dans des objets, ce qui devrait simplifier le travail des développeurs. Mais pour les développeurs comme moi, c'est tout le contraire. Au contraire, la barre de recherche la plus simple me convient mieux, car je n'ai besoin de lancer une recherche que lorsque le contenu de la barre de recherche change, puis d'actualiser le tableau une fois. Et si vous appelez ces contrôleurs d'affichage fournis, vous devez implémenter davantage de protocoles et vous devez également fournir un contrôleur de vue de table qui affiche l'affichage des résultats, ce qui me donne vraiment le vertige. Les informations officielles d'Apple fournissent également un exemple d'implémentation, mais cet exemple lui-même est très compliqué et implique plusieurs contrôleurs de vue.
La méthode proposée sur cette page me convient mieux.
Il s'agit d'un exemple officiel. Il s'agit d'une approche menée par Apple. Ils ont éliminé l'ancienne approche et recommandent désormais l'utilisation du contrôleur de recherche de l'interface utilisateur. Cependant, la raison de ce changement n'est pas claire. ? Cela ne semble pas très utile.
4. Utiliser IB pour créer l'interface ou l'implémenter dans le code ?
L'utilisation de code pour définir la taille du contrôle peut poser des problèmes lors de l'adaptation aux différents écrans. Nous n'avons pas encore étudié comment effectuer la partie de redimensionnement automatique.
Mais utiliser du code pour créer une interface n'est pas aussi difficile qu'on l'imagine. En fait, il vous suffit de traiter les contrôles de l'interface comme des objets, de définir la familiarité de l'objet, d'ajouter l'objet. à la vue, et définissez Définir le délégué concerné, puis c'est OK.
Le professeur du cours Guo Chongzhi est jeune et prometteur, et correspond davantage aux goûts des jeunes. Ses cours sont relativement détendus et naturels, nous permettant de nous sentir détendus et plus capables d'écouter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!