historial guardar google eliminar como celular busqueda buscado borrar aplicaciones actividad iphone ios xcode ios7 state-restoration

iphone - guardar - eliminar busqueda de google android



Advertencia crĂ­ptica sin ningĂșn resultado de google (3)

Recibo esta advertencia en mi proyecto de iOS: (iOS7, XCode 5 GM)

Advertencia: no se puede crear la restauración en el archivo marcador de progreso

Estoy trabajando en un controlador de vista que se vuelve negro cuando recibo esta advertencia al inicio. Eliminar la aplicación y reiniciar XCode a veces parece ayudar. Estoy regresando NO a ambos

-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState: -(BOOL)application:(UIApplication *)application shouldSaveApplicationState:

Actualización1: probé en iPhone4s. Mismo resultado. Advertencia y pantalla negra en mi controlador de vista.

Actualización2: Respondí mi propia pregunta para la pantalla en negro. La advertencia simplemente desapareció en las últimas versiones de iOS 7.0.x.


Asegúrese de establecer un controlador de vista como el controlador de vista inicial en su archivo de guión gráfico. Encontrará esta configuración en el inspector de atributos.

ACTUALIZAR

Parece que es posible que no haya agregado una ID de restauración al controlador de navegación en sí, sino que puede haber configurado las ID de restauración en los controladores de vista secundarios. Si este es el caso, debe agregar la identificación de restauración a los controladores faltantes.


No he encontrado por qué este mensaje está impreso en la consola, pero creo que fue algún tipo de error en iOS. Con las últimas actualizaciones de iOS 7, ya no aparece "Advertencia: no se puede crear el archivo de restauración en el marcador de progreso".

La parte más interesante es la pantalla en negro. Sucede cuando tienes un ViewController normal y un TableView dentro . Tuve que crear DOS salidas entre la propiedad view de ViewController y la vista base (a excepción de la vista de tabla hay más vistas, esa es la razón por la que tuve que usar un controlador de vista genérico). Hay una conexión automática con cada ViewController, así que fue realmente extraño. Supongo que nuevamente es una especie de error de iOS.


Añadiendo el

UIViewControllerRestoration

lo resolvió para mí. Si hace clic en la referencia del protocolo, dice:

// A class must implement this protocol if it is specified as the restoration class of a UIViewController. @import UIKit; @interface AppDelegate : UIResponder <UIApplicationDelegate, UIViewControllerRestoration> @property (strong, nonatomic) UIWindow *window; @end

En los documentos está escrito:

Una clase de restauración implementa el protocolo UIViewControllerRestoration y es responsable de encontrar o crear un objeto designado en el momento de la restauración. Aquí hay algunos consejos sobre cuándo usar cada uno:

1) Si el controlador de vista siempre se carga desde el archivo del guión gráfico principal de la aplicación al momento del lanzamiento, no asigne una clase de restauración. En su lugar, permita que su aplicación delegue encuentre el objeto o aproveche el soporte de UIKit para encontrar implícitamente objetos restaurados.

2) Para los controladores de vista que no están cargados desde su archivo principal del guión gráfico al momento del lanzamiento, asigne una clase de restauración. La opción más simple es hacer que cada controlador de vista tenga su propia clase de restauración.

Hasta ahora lo he entendido de esta manera. Sin el protocolo UIViewControllerRestoration, appDelegate no es la clase de restauración (1). Por lo tanto, la advertencia se escribe al inicio de la aplicación (tiempo de restauración). El delegado de la aplicación no puede encontrar de alguna manera el objeto que debe asignarse al archivo marcador. El problema está en la aplicaciónDelegate. Cuando el delegado de la aplicación se convierte en restorationClass, omite el paso 1) y pasa al paso 2). Parece que appDelegate se convierte en la principal clase de restauración para todas las demás vistas. El siguiente método:

+ (UIViewController*) viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder {}

nunca se llama en mi aplicación y la restauración funciona sin avisos ni errores.

Me gustaría entender el problema y lo que está pasando. Espero que esto te ayude, y los comentarios son bienvenidos para aclarar el problema. :)