¿Por qué "actual controller de vista modal"?

Solo tiene curiosidad sobre el uso del controller de vista modal. ¿Cuándo y por qué debemos usarlos? ¿Hay alguna pauta?

Encontré el código de la database de ejemplo de la muestra crear un controller de navigation solo para presentar un controller de vista modal. ¿Porqué es eso?

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addViewController]; [self.navigationController presentModalViewController:navController animated:YES]; 

¿Hay alguna razón funcional para esto? ¿Funcionaría si empujamos el addViewController a self.navigationController?

En general, utiliza los controlleres de vista modal para enfocar la atención del usuario en una tarea. Cuando empujas, el usuario está en algún tipo de flujo de navigation, pero aún tiene la aplicación total al scope de la mano. Pueden decidir avanzar o retroceder, cambiar a una pestaña diferente en el medio, lo que sea. Cuando obtienen un controller de vista modal, no pueden hacer nada de eso hasta que la tarea se complete o se cancele (la vista modal se descarta).

Por favor, ¿por qué este código usa presentModalViewController? (no pushViewController) también

Sí, hay pautas. Las Pautas de interfaz humana de iOS dicen:

Use una vista modal cuando necesite ofrecer la capacidad de realizar una tarea autónoma relacionada con la function primaria de su aplicación. Una vista modal es especialmente apropiada para una subtarea de múltiples pasos que requiere elementos de interfaz de usuario que no pertenecen en la interfaz de usuario de la aplicación principal todo el time.

También dicen "Hacer tareas modales ocasionales y simples":

Cuando sea posible, minimice el número de veces que las personas deben estar en un entorno modal para realizar una tarea o proporcionar una respuesta. Las aplicaciones iOS deberían permitir a las personas interactuar con ellas de forms no lineales. La modalidad impide esta libertad al interrumpir el flujo de trabajo de la gente y obligarlos a elegir una ruta en particular.

La modalidad es más apropiada cuando:

Es fundamental llamar la atención del usuario. Una tarea debe completarse (o abandonarse explícitamente) para evitar dejar los datos del usuario en un estado ambiguo. La gente aprecia ser capaz de realizar una subtarea autónoma en una vista modal, porque el cambio de context es claro y temporal. Pero si la subtarea es demasiado compleja, las personas pueden perder de vista la tarea principal que suspendieron cuando ingresaron a la vista modal. Este riesgo aumenta cuando la vista modal es de pantalla completa y cuando incluye múltiples vistas o estados subordinados.

Mantenga las tareas modales bastante cortas y enfocadas de forma estricta. No desea que sus usuarios experimenten una vista modal como una mini aplicación dentro de su aplicación. Tenga especial cuidado de crear una tarea modal que involucre una jerarquía de puntos de vista, porque las personas pueden perderse y olvidarse de cómo volver sobre sus pasos. Si una tarea modal debe contener subtareas en vistas separadas, asegúrese de proporcionar a los usuarios una ruta clara y única a través de la jerarquía y evite circularidades.

Proporcione siempre una manera clara y segura de salir de una tarea modal. Las personas siempre deben poder pnetworkingecir el destino de su trabajo cuando rechazan una vista modal.

Si la tarea requiere una jerarquía de vistas modal, asegúrese de que sus usuarios entiendan lo que sucede si tocan un button Listo en una vista que está por debajo del nivel superior. Examine la tarea para decidir si un button Hecho en una vista de nivel inferior debe finalizar solo la parte de la tarea de la vista o la tarea completa. Cuando sea posible, evite agregar botones Done a vistas subordinadas, debido a este potencial de confusión.

De la documentation de Apple

Los controlleres de vista modal proporcionan forms interesantes de administrar el flujo de su aplicación. Más comúnmente, las aplicaciones usan controlleres de vista modal como una interrupción temporal para get información key del usuario. Sin embargo, también puede usar controlleres de vista presentados de manera modal para implementar interfaces alternativas para su aplicación en momentos específicos.

Controladores de vista modal