Cloner ou copier UIViewController ou UIView
UII besoin de copier, auto contrôleur de soi.vue, j'ai essayé:
UIView* viewOfSelf =[self.view copy];
UIViewController* controller = [self copy];
UIView* viewOfSelf =[self.view mutableCopy];
UIViewController* controller = [self mutableCopy];
L'erreur est:
-[UIViewController mutableCopyWithZone:]: unrecognized selector sent to instance 0xb803490
-[UIView copyWithZone:]: unrecognized selector sent to instance 0x6e0acb0
source d'informationauteur Davidin073
Vous devez vous connecter pour publier un commentaire.
Utilisation -
Même
Pour qu'un objet soit copiable il doit mettre en œuvre
NSCopying
protocole quiUIView
classe niUIViewController
classe ne le font pas.Si vous souhaitez copier un point de vue, je suis sûr que vous êtes en train de faire quelque chose de mal. La copie doit être remplacé par réutilisables
UIView
tout comme dansUITableView
à l'aide dedequeueReusableCellWithIdentifier:
méthode.Copier-vue-contrôleur est certainement un anti-modèle. Si vous souhaitez copie exacte de la vue-contrôleur que vous avez déjà - créer une nouvelle instance avec les mêmes paramètres que actuelle est.
Malheureusement, je ne suis pas encore autorisés à commenter, mais le rishi la solution d'un problème: il ne copie pas
NSLayoutConstraint
s. Donc si l'un de vos points de vue sont à l'aide de mise en page automatique, ceux qui ne vont pas être copiés. Je suis en train d'écrire un mini-lib pour le résoudre et de la poster sur github. Malheureusement, je n'ai pas trouvé de prêt-à-utiliser la solution de n'importe où.//Edit
Désolé, ce que j'ai écrit précédemment n'a pas été tout à fait correct. J'ai fait un peu plus de recherche et il s'avère que, par défaut, le
NSLayoutConstraint
s dans l'archive de la vue ne sont PAS enregistrées. Mais, vous pouvez spécifier si vous souhaitez archiver une contrainte par l'établissement de sesshouldBeArchived
propriétéYES
. Ensuite, même après ce fauxcopy
vous conservez le droit de contraintes dans la copie de ce point de vue.