¿Cómo evitar las ediciones gratuitas de Xcode en archivos de storyboard?


Cuando navego a uno de mis archivos xib, Xcode marca el archivo como tocado. Deshacer y revertir no tienen ningún efecto. Guardar parece no hacer ningún daño, pero la falla me causa trabajo git adicional frecuente.

Alguien más ha visto esto o tiene una idea sobre algo en mi ventana principal.xib que lo causaría?

Editar en 2016-todavía está sucediendo!

 55
Author: danh, 2011-05-05

3 answers

Apple dice que es un problema conocido:

Esto es una continuación del Bug ID# 9847336. Después de una investigación adicional, se ha determinado que este es un problema conocido, que actualmente está siendo investigado por ingeniería. Este problema se ha archivado en nuestra base de datos de errores con el Bug ID original # 9056156. El número de error original que se utiliza para rastrear este problema duplicado se puede encontrar en la columna Estado, en este formato: Duplicate/OrigBug#.

 27
Author: danh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-01 19:15:43

Después de intentar muchas soluciones diferentes para evitar este error extremadamente molesto, he encontrado un método que funciona (ciertamente no es una "solución", sino una solución).

Bloquee los controladores cuando haya terminado con ellos.

Seleccione un controlador de vista en un guion gráfico, abra el inspector de identidad y, en la parte inferior de la sección Documento, verá un menú desplegable Bloquear. Seleccione "Todas las propiedades"en el menú desplegable bloquear.

Si haces esto para todos los controladores que te dan problemas (o simplemente todos los controladores en general, incluso), notará cuando abra el guion gráfico, Xcode aún modificará los marcos de varios elementos, pero luego deshará inmediatamente los cambios.

Esto entonces conduce al ciclo de desarrollo siendo:

  1. Desbloquear un controlador de vista
  2. Realizar los cambios necesarios
  3. Bloquear el controlador de vista
  4. Commit

El bloqueo también funciona en un caso vista por vista si eso se adapta a sus necesidades mejor.

El error ha existido desde hace bastante tiempo y no parece que se esté arreglando pronto, por lo que desafortunadamente esto tendrá que ser suficiente por ahora.

 12
Author: Adam Eisfeld,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-04 19:34:41

Personalmente siento que saber que es un error conocido no soluciona exactamente el problema. Esto es lo que he averiguado hasta ahora y cómo evitar que aparezcan.

NOTA: Esto es para un guion gráfico con diseño automático habilitado. Todavía no lo he descubierto para guiones gráficos manuales.

A continuación se muestra un ejemplo de un botón.

<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ebd-ny-Ill">
    <rect key="frame" x="97" y="5" width="135" height="30"/>
    <color key="backgroundColor" white="0.94557291669999999" alpha="1" colorSpace="calibratedWhite"/>
    <constraints>
        <constraint firstAttribute="width" constant="86" id="bXV-mS-ksp">
            <variation key="heightClass=regular" constant="135"/>
        </constraint>
    </constraints>
    <fontDescription key="fontDescription" type="system" pointSize="13"/>
    <state key="normal" title="See Full Menu">
        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
    </state>
    <variation key="default">
        <mask key="constraints">
            <exclude reference="bXV-mS-ksp"/>
        </mask>
    </variation>
    <variation key="heightClass=regular" misplaced="YES">
        <rect key="frame" x="97" y="5" width="135" height="28"/>
        <mask key="constraints">
            <include reference="bXV-mS-ksp"/>
        </mask>
    </variation>
    <connections>
        <action selector="showMenu:" destination="eQk-yf-uDh" eventType="touchUpInside" id="xOP-Se-FXQ"/>
    </connections>
</button>

Si echas un vistazo, verás que el botón tiene un elemento llamado <rect/> Que define el tamaño y la posición del elemento de la interfaz de usuario. Si mira a continuación, también verás un elemento llamado <variation/> que describe el cambio de posición basado en la clase de tamaño. Con el fin de fijar la posición para esto, tenemos que utilizar los siguientes pasos:

  1. Echa un vistazo a la advertencia que aparece en Xcode. Tome nota de lo que debe cambiarse para ese elemento de la interfaz de usuario.
  2. Abra el guion gráfico en un editor externo (texto).
  3. Encuentre el elemento UI en el guion gráfico.
  4. Cambie el valor para que coincida con lo que es la advertencia sugiriendo tanto <rect/> como <variation/>.
  5. Guarde el archivo en el editor externo.
  6. Vuelve a Xcode. Vamos a volver a calcular todas las restricciones.
  7. Acepte la advertencia para el elemento UI que aparece de nuevo.
  8. Si vuelve al editor externo, notará que el elemento <variation/> se ha ido.

En mi ejemplo, tuve que actualizar x="97" a x="597".

Todavía estoy trabajando en elementos que no tienen un <variation/>. Actualizaré esta respuesta tan pronto como averiguar.

 3
Author: mikeho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-10 23:27:22