[MÚSICA] No te desanimes. Para partes del controlador de vista solamente falta, el delegado que, como recordarás, va a ser llamado cuando precisamente a través del marco de trabajo Audio Video Foundation, se detecta ese código QR que le indicamos que se detectara, va a llamar a este delegado, es decir, él ya detectó un código QR en ese momento, lo decodificamos, o le decimos cuál es la decodificación y lo vamos a empezar a enlazar con la otra vista. Vamos a darle cuerpo a ese método del delegado que es llamado cuando se detecta el código QR. Okey, y de cualquier manera vamos a poner ciertas condiciones, para revisar que todo vaya bien dentro de este método. Entonces, override más bien viene directamente de un protocolo, entonces vamos a hacer una función, que se llama salida output, o captura output, y es precisamente la firma que estamos viendo, y ahí vamos a poner el cuerpo de ese método. De alguna manera todo el cuerpo está basado en ese objeto, es decir en el atributo, en el parámetro metadata objects. Y lo primero que hay que revisar es si se tiene algo en ese objeto, si es nulo, o al menos existe un objeto. Pero lo primero que podríamos pensar es desaparecer ese marco, una vez que entra posiblemente sea la segunda vez. Entonces, lo que vamos a hacer es desaparecer el marco, y vamos a ponerle un tamaño de 0. Eso viene de Core Grafics y le estamos diciendo que el ancho y el alto de ese marco es cero, es decir, lo va a desaparecer de la vista, en principio, y después vamos a ver si ese objeto metadata objects tiene algo, primero que sea diferente de nulo y lo que podemos pensar es de alguna manera lo contrario, porque si lo ponemos así, podemos ponerlo así pero realmente, pensar lo inverso, es decir, que sea nulo, que sea nulo, y si o si, de alguna manera no tiene objetos, o simplemente nos vamos a regresar en ese momento, ya no seguimos con el código porque está vacío. Si no tiene ningún elemento eso quiere decir que nos podemos regresar porque no hay nada que analizar. A partir de este momento sabemos que el meta objects es diferente en unos y que al menos tiene un elemento y ese elemento debe ser un QR, ¿okey? Bueno, entonces continuamos, vamos a crear una constante, para que nos facilite las cosas, que es precisamente el primer elemento de ese arreglo metadata objects que lo voy a llamar OBJMetadata, o metadato, y que va a ser simplemente el primer elemento de ese arreglo. Simplemente lo vamos a forzar su tipo como audio video, metadata, metamachine, readable code object. Es decir, sabemos que es un código. Directamente, ese metadato es un código de lectura. Posteriormente, revisamos, me gusta más así, vamos a ponerle paréntesis, pero bueno, su tipo es y su tipo, es audio video, metadata, machine, object type, QR code, por aquí anda, QR code, entonces, revisamos si eso ocurre. Estamos en la vía correcta, en la que estamos esperando, y vamos, y vamos a obtener propiamente el metadato. Entonces, lo primero que podríamos obtener ese objeto y dónde se detectó ese QR para que de alguna manera, nuestro marco QR, lo enmarquemos, valga la redundancia. Entonces, vamos a crear un objeto, bordes, pero más bien objeto bordes, dentro de ese objeto va a tener lo que serían los bordes o los límites para nuestro marco QR. Y nos vamos a apoyar en la capa, y vamos a hacer una serie de transformaciones, ¿okey? Y bueno, precisamente lo que vamos a utilizar ese objeto que acabamos de obtener, el objeto metadato, y, pero, vamos a obligar al tipo a que sea precisamente un objeto audio video metadata y así, el que está seleccionado, machine readable code object, ese está bien lo pasamos como para retro y lo que nos debe de regresar es precisamente ese objeto, también ese mismo tipo, es decir, audio video, video metadata machine readable code object, y simplemente de ahí vamos a obtener los bordes para ajustarlo en nuestro marco QR a ese valor. Entonces, vamos a apoyarnos otra vez en nuestra variable de instancia, marco QR, y, punto frame, es igual nos apoyamos en ese objeto bordes, o OBJ bordes objeto bordes, bordes, objeto bordes, ahora sí punto, sus bordes o sus límites, y se los establecemos precisamente como parte de los bordes del marco QR y es donde se detectó ese código QR, revisamos, si realmente se detectó un string dentro del código QR o a lo mejor hubo algún problema. Entonces, otra vez nos apoyamos en el metadato, que tiene una propiedad que se llama string value, vemos que sea diferente de nil o nulo, simplemente, estamos seguros, ya que tenemos nuestro código o nuestro texto que está codificado dentro del QR, entonces modificamos nuestra variable URLS, y le pasamos ese string value directamente a esa variable. ¿Okey? Y estamos listos para hacer el cambio de vista, para ello nos vamos a apoyar en el control de navegación, lo obtenemos, y poder empezar a hacer la transición entre esta vista y la que va a mostrar tanto la etiqueta como realmente una navegación directa sobre el URL obtenido. Entonces, lo que vamos a vamos a, ese navigation consoler que ejecute la transición, y sí recordarán le pusimos su identificador a esa transición o ese siguió detalle, y que el que esté enviando, o el sender, es nosotros mismos o esta misma, este mismo objeto. Entonces le ponemos self en este punto ya detectamos el QR ponemos, o estamos preparando realmente la transición, le estamos pidiendo al navigation controler que ejecute esa transición, lo que necesitamos crear es un propio objeto controlador de navegación que podamos modificar y, de alguna manera, poder enviar, ¿no?, eso que necesita la siguiente vista para poder funcionar. Terminamos la parte del delegado, y realmente terminamos la codificación del controlador de vista. Faltan detalles de otros lados, de otras vistas, que precisamente se tienen que adecuar a lo que se les envió esta vista principal. [MÚSICA]