9
votes

Nstoolbaritem: "Assurez-vous que cette barre d'outils a une taille valide / min / max"?

Depuis la mise à niveau vers Mac OS Sierra et la nouvelle version Xcode, j'obtiens l'erreur suivante à chaque fois que je lance ma demande pour chacun des NstoolBaritems: xxx

J'ai essayé de jouer dans le change de scénario La taille sans chance, quand j'ai cherché autour de moi, j'ai trouvé quelques personnes ayant ce problème aussi avec le nouveau système d'exploitation mais aucune réponse utile.

Quelqu'un est confronté au même problème, tout conseil?

Merci beaucoup,

Marc


0 commentaires

5 Réponses :


0
votes

À l'origine, j'ai essayé ceci (voir la mise à jour ci-dessous la pensée):

http://cocoa-dev.apple.narkive.com/islaiclr/strange-toolbar-item-error P>

Résumé: P>

Mes options sont: p>

  • Changez la taille maximale comme ci-dessus et avez des éléments de la barre d'outils potentiellement apparaître la mauvaise taille pré-Sierra; P> Li>

  • ignorer l'avertissement et tout apparaît comme il se doit dans chaque version; p> li> ul> blockQuote>

    Notez également que: P>

    i pensais que j'avais déjà essayé cela sans succès, jusqu'à ce que je réalisais ce qui était Se passe: J'avais édité les valeurs, puis fermée l'éditeur de la barre d'outils dans IB. J'ai maintenant compris que les changements n'étaient pas sauvés; Quand j'ai rouvert L'éditeur de barre d'outils, les anciennes valeurs étaient toujours présentées. Courir une fois avec L'éditeur de barre d'outils ouverte semble avoir apporté les modifications "prenez". (Et oui, J'ai essayé de nettoyer à différentes étapes.) P> BlockQuote>

    Mise à jour déc. 2016 ------- p>

    Pour une raison quelconque, Minsize change toujours de temps en temps de temps en temps. En fin de compte, j'ai lié tous ces NstoolBaritems à la classe suivante, cela l'a réparé pour moi: P>

        import Cocoa
    
        class ToolbarItemAvoidMinWarningIssue: NSToolbarItem {
    
        var widthT: CGFloat = 60
        var heightT: CGFloat = 27
    
        override var minSize: NSSize{
            get {
                return NSSize(width: widthT, height: heightT)
            }
            set {
                widthT = newValue.width
            }
        }
    
    }
    


0 commentaires

1
votes

Pour moi, changez la taille maximale de la NSTOLBaritem comme mentionné ci-dessus n'a pas fonctionné. Mais la modification de la taille minimale de celle-ci a fait le tour. Le message d'avertissement est maintenant parti.


1 commentaires

En effet, pour moi était tous les deux. Merci d'avoir clarifié Vomi.



0
votes

J'ai effectivement perdu beaucoup plus de temps que j'aurais dû sur cette question, mais éliminez les avertissements est l'une de mes affaires. Pour moi, peu importe ce que j'ai changé la tailles min / max de la barre d'outils, elle s'est plainte des tailles incorrectes par un ou deux pixels. J'ai accidentellement trébuché sur la solution suivante. Mes boutons utilisent la taille de contrôle «régulière». Dans IB, j'ai changé chaque Nsbutton de régulier à petit, petit à mini, puis mini-retour à la normale. J'ai ensuite ajusté la hauteur minimale de chaque NstoolBaritem vers le haut pour être de moins de deux moins que le maximum. Je ne suis pas sûr de ce qui s'est passé vraiment dans le processus. Il peut y avoir une solution plus simple, mais j'ai maintenant commis mon storyboard et je tiens toujours mon souffle que les avertissements ne reviennent pas!


0 commentaires

1
votes

n'a pas été capable de résoudre ce problème dans le constructeur d'interface. Cependant, le remplacement minissize dans la sous-classe de NstoolBaritem a résolu le problème.

- (NSSize)minSize
{
    if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) {
        /* Overriding this getter seems to be the only solution for runtime error logs like: NSToolbarItem (<APMRegularToolbarItem: 0x60e000039460>) had to adjust the size of <NSButton: 0x60f0001acce0> from {40, 25} to the expected size of {42, 27}. Make sure that this toolbar item view has a valid frame/min/max size. This is an app bug, please do not file a bug against AppKit or NSToolbar! Break on _NSToolbarAdjustedBorderedControlSizeBreakpoint
         */
        return NSMakeSize(42, 27);
    }
    else {
        return [super minSize];
    }
}


1 commentaires

Merci pour cela, je suis allé avec votre approche! Les problèmes ont disparu!



1
votes

a trouvé le problème! Le problème est que dans IB en Xcode, les champs MINSIZE ne sont liés que dans une source XIB. Si vous modifiez le NSTOOLBARITEM Ministry In IB, cela l'enregistre de manière appropriée. Mais si vous rouvrez le panneau, en rouvrez Xcode, en réopérant le projet ou même simplement à la réouverture du panneau Propriétés, il affiche à nouveau les valeurs par défaut. Donc, le panneau Propriétés à ce stade peut afficher W 127 h 25, même si la source de fichier XIB (le XML) indique W 129 H 27 (quelles que soient les valeurs que vous avez essayées de définir la dernière fois). Ainsi, les valeurs de champ minissize dans le panneau Propriétés de Xcode IB ne sont pas définies correctement. Cela conduit à la situation déroutante que l'enregistrement après avoir réouvert le panneau Propriétés du NSTOOLBARITEM, vos modifications seront à nouveau écrasées. C'est un virus Xcode qu'il semble. Réponse de @Marius résout ce temps d'exécution, l'autre solution n'est pas d'ouvrir à nouveau les propriétés NSTOOLBARITEM après avoir défini le minisize.


0 commentaires