sinonimo promocionado persona objeto nombre ejemplos columna campos ambiguos ambiguo ambiguedad ambigua ios objective-c swift xcode uitableview

ios - promocionado - la columna en field list es ambigua



Se detectó un caso donde las restricciones sugieren ambiguamente una altura de cero (19)

Simplemente habilite las celdas de vista de tabla de tamaño automático

tableView.estimatedRowHeight = 85.0 tableView.rowHeight = UITableViewAutomaticDimension

& asegúrese de agregar restricciones en todos los lados de UITableViewCell como-

Después de actualizar a Xcode 6.1 beta 2 cuando ejecuto mi aplicación que contiene celdas de vista de tabla, el asistente de depuración dice:

Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell''s content view. We''re considering the collapse unintentional and using standard height instead.

Antes, cuando usaba Xcode 5 en este proyecto, recibía algunos errores, pero esos han desaparecido desde que actualicé. No tengo otros errores o advertencias ahora. Ya he intentado ajustar los tamaños de todas las celdas de vista de tabla y también he intentado usar la altura estándar, pero sigo recibiendo la misma advertencia:

Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell''s content view. We''re considering the collapse unintentional and using standard height instead.

También he leído todos los temas similares sobre esto, pero ninguna de sus soluciones ayuda. Cuando pruebo la aplicación con el simulador, la aplicación funciona bien, excepto las imágenes que se supone que están en las celdas tableView no están allí.


En el guión gráfico, configure el campo Row height cell con el mismo valor que Row height en tableView (ambos con el mismo valor me funcionaron).

Si agrega la función heightForRowAtIndexPath a su código, puede provocar un problema de rendimiento porque se llamará para cada celda, así que tenga cuidado.


En mi caso, estaba construyendo la celda mediante programación y seguía recibiendo este error.

Estaba agregando las subvistas y restricciones en el método init UITableViewCell como este:

addSubview(rankingLabel) addConstraints(cellConstraints)

contentView el problema agregándolos al contenido de la celda en contentView lugar:

contentView.addSubview(rankingLabel) contentView.addConstraints(cellConstraints)


En xcode 6.0.1 había eliminado estas advertencias especificando la altura de la fila usando:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 44.0; }


Establezca el alto de fila estimado en cero y la advertencia desaparece:


Este es un problema de autolayout. Asegúrese de que sus subvistas tengan todas las restricciones. Para mí, faltaba la restricción inferior para la Etiqueta de título en la celda. Cuando agregué eso, la advertencia desapareció y todo apareció perfectamente.


Para resolver esto sin un método programático, ajuste la altura de la fila de la vista de tabla en el Inspector de tamaño del guión gráfico.


Recibí el mismo mensaje de error, asegúrese de que todas sus salidas sean válidas, como la vista de tabla y las restricciones de vista de tabla


Recibí esta advertencia hoy. Esto es lo que lo hizo desaparecer para mí (en el generador de interfaces)

1. Establezca el campo de altura de fila para la vista de tabla en algo diferente de 44 2 Establezca el campo de altura de fila para la celda tableView en algo diferente de 44

No tuve que hacer ningún cambio en el código


Se encuentra con el efecto secundario de una nueva característica fantástica en las Vistas de tabla de iOS8: Alturas de fila automáticas.

En iOS 7, tenía filas de un tamaño fijo (establecido con tableView.rowHeight ), o escribiría un código para calcular la altura de sus celdas y lo devolvería en tableView:heightForRowAtIndexPath . Escribir código para el cálculo de la altura de una celda podría ser bastante complejo si tuviera numerosas vistas en su celda y tuviera diferentes alturas para considerar en diferentes tamaños de fuente. Agregue Dynamic Type y el proceso fue un dolor en el culo.

En iOS 8, aún puede hacer lo anterior, pero ahora iOS puede determinar la altura de las filas, siempre que haya configurado el contenido de su celda mediante el Diseño automático. Este es un gran beneficio para los desarrolladores, porque a medida que cambia el tamaño dinámico de la fuente, o el usuario modifica el tamaño del texto usando la Configuración de Accesibilidad, su IU puede adaptarse al nuevo tamaño. También significa que si tiene un UILabel que puede tener varias filas de texto, su celda ahora puede crecer para acomodarlas cuando las celdas lo necesiten y encogerse cuando no es necesario, por lo que no hay espacios en blanco innecesarios.

El mensaje de advertencia que está viendo le dice que no hay suficientes restricciones en su celda para que el diseño automático informe a la vista de tabla de la altura de la celda.

Para usar la altura dinámica de la celda, que, junto con las técnicas ya mencionadas por otros carteles, también eliminarán este mensaje, debe asegurarse de que su celda tenga suficientes restricciones para unir los elementos de la IU a la parte superior e inferior de la celda. Si ha utilizado el diseño automático anteriormente, probablemente esté acostumbrado a establecer restricciones superiores + iniciales, pero la altura de fila dinámica también requiere restricciones inferiores.

El pase de diseño funciona así, lo que ocurre inmediatamente antes de que una celda se muestre en la pantalla, de manera justo a tiempo:

  1. Se calculan las dimensiones para contenido con tamaños intrínsecos. Esto incluye UILabels y UIImageViews, donde sus dimensiones se basan en el texto o UIImages que contienen, respectivamente. Ambas vistas considerarán que su ancho es conocido (porque ha establecido restricciones para los bordes finales / iniciales, o ha establecido anchuras explícitas, o ha utilizado restricciones horizontales que eventualmente revelan un ancho de lado a lado). Digamos que una etiqueta tiene un párrafo de texto ("número de líneas" se establece en 0 para que se ajuste automáticamente), solo puede tener 310 puntos de ancho, por lo que se determina que tiene 120 puntos de altura con el tamaño de fuente actual.

  2. La interfaz de usuario se presenta de acuerdo con sus restricciones de posicionamiento. Hay una restricción en la parte inferior de la etiqueta que se conecta con el margen inferior de la celda. Dado que la etiqueta ha crecido hasta 120 puntos de altura, y como está limitada al fondo de la celda por la restricción, debe empujar la celda hacia "abajo" (aumentando la altura de la celda) para satisfacer la restricción que dice "parte inferior de la celda". la etiqueta siempre está a una distancia estándar de la parte inferior de la celda.

El mensaje de error que informó se produce si falta esa restricción inferior, en cuyo caso no hay nada para "empujar" la parte inferior de la celda lejos de la parte superior de la celda, que es la ambigüedad que se informa: sin nada para empujar la parte inferior En la parte superior, la célula se derrumba. Pero el diseño automático también lo detecta y vuelve a utilizar la altura de fila estándar.

Para lo que vale, y sobre todo para tener una respuesta redondeada, si implementa las alturas de fila dinámicas basadas en el diseño automático de iOS 8, debe implementar tableView:estimatedHeightForRowAtIndexPath: Ese método de estimación puede usar valores aproximados para sus celdas, y se llamará cuando la vista de tabla se cargue inicialmente. Ayuda a UIKit a dibujar cosas como la barra de desplazamiento, que no se puede dibujar a menos que la vista de tabla sepa cuánto contenido puede desplazarse, pero no necesita tamaños totalmente precisos, ya que es solo una barra de desplazamiento. Esto permite diferir el cálculo de la altura real de la fila hasta el momento en que se necesita la celda, lo cual es menos computacionalmente intenso y permite que su UITableView se presente más rápido.


Si está haciendo un cálculo dinámico de altura,

  • Debe tener todos los elementos vinculados entre sí en términos de restricciones como arriba y abajo.
  • definitivamente debería tener una restricción inferior que esté vinculada al elemento en la parte inferior de su celda

Si está usando una celda estática o una celda dinámica, simplemente agregue un poco de altura de fila a la vista de tabla en la tabla del inspector y desmarque el automático al lado derecho de la altura de fila, eso es todo, dejará de recibir esta advertencia.


Si ha creado un TableViewCell personalizado para TableView, asegúrese de haber dado las restricciones inferior y superior a sus celdas, también podría recibir este mensaje si sus subvistas dentro de las celdas personalizadas están alineadas en el centro Y, lo que no revelaría ningún mensaje de error, pero podría ensuciar con la altura de la fila de identificación para la vista de tabla a su vez, como en la Imagen que he adjuntado, aquí tenemos restricciones superiores e inferiores

Cuando crea una celda personalizada para tableView, debe tener una altura de fila específica o restricciones superiores e inferiores para las subvistas de la celda personalizada dentro de la celda (por ejemplo, etiqueta en la celda personalizada como en la imagen de abajo)

Pero si esto no funciona, puede intentar establecer el alto de fila para su celda en lugar de ser automático como en esta imagen

Pero asegúrese de que si desactiva esa marca automática, debe ajustar el tamaño de la fila para los cambios mediante programación que podrían haberse realizado automáticamente


También puede ver este mensaje si sus únicas restricciones están configuradas para alinear todos los elementos verticalmente y no tiene / desea una altura especificada para la celda. Si establece una restricción superior / inferior en el elemento, la advertencia desaparecerá.


Tengo el mismo error, debido a esta línea se mostró este error.

self.layer.backgroundColor = UIColor (blanco: 1, alfa: 0.2) como! CGColor

Solo cambio la línea de la siguiente manera para corregir el error

self.layer.backgroundColor = UIColor (blanco: 1, alfa: 0.2) .cgColor


Tres cosas han logrado silenciar esta advertencia hasta ahora. Puede recoger el más conveniente para usted. Sin embargo, nada bonito.

  • Para configurar la altura de celda predeterminada en viewDidLoad

    self.tableView.rowHeight = 44;

  • Vaya al guión gráfico y cambie la altura de la fila en su vista de tabla a algo diferente de 44.

  • Para implementar el método de delegado de tableview heightForRowAtIndexPath

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 44; }

Extraño.


Tuve este problema cuando mis etiquetas y vistas en la tableViewCell personalizada estaban restringidas a la customCell, no a su Vista de contenido. Cuando borré las restricciones y las conecté a las celdas Vista de contenido, el problema se resolvió.


Tuve este problema después de crear un UITableViewCell personalizado y agregar mis subvistas a la celda en lugar de su contentView .


Yo también experimenté esta advertencia al pasar a Xcode 6 GM. Solo recibí la advertencia cuando volví a girar el dispositivo a su posición original.

Estoy usando UITableViewCells personalizados. La vista de la tabla del guión gráfico se establece en mi tamaño personalizado (100.0 en mi caso). Si bien las celdas de la tabla se procesan correctamente como lo hicieron en versiones anteriores, no me gustó el mensaje de advertencia.

Además de las ideas anteriores, agregué esto

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 100.0; }

La pantalla se procesa ... responde a la rotación y no más mensajes de advertencia.