IOS fundación - la página salto de varias maneras y por el valor

A, archivo de guión gráfico saltos y los valores tradicionales de viewController

1. Saltar

En primer guión gráfico en sí ofrece muchas manera conveniente para ayudarnos a construir el archivo de diseño, es posible saltar directamente se puede lograr entre el viewContoller, guión gráfico puede verse como un conjunto de páginas o colección viewController por la operación "Conexión". Esto no sólo reducirá la cantidad de código que escribimos, sino que también nos ayudará a ver el salto lógico entre páginas, aquí digo brevemente, el modo de operación:
el nuevo pocos viewController, uso y mantenga pulsado el botón de control (presione hacia abajo el panel táctil) , arrastre, habrá una línea con una flecha, a continuación, pasar a viewController desea saltar, liberarlo, es una de las varias opciones de acción aparecerá, la elección general para mostrar
Aquí Insertar imagen DescripciónAquí Insertar imagen Descripción

Segue diferencia 2.Action

Ramificarse en varios tipos, en donde Push, modal, Popover y vuelva a colocar en desuso.

  • mostrar
  • Mostrar detalle
  • presente Modalmente
  • Presente como Popover
  • Personalizado
  • empujar
  • Modal
  • popover
  • Reemplazar

mostrar

  • El método proporciona un controlador adaptativo para la vista, una presentación flexible.
  • Cuando se utiliza vista UINavigationController pila. Destino vista de navegación se presiona en la parte superior de la pila. Barra de navegación proporciona un botón de retroceso.
  • Cuando se utiliza en el ejemplo UIViewController, y resultados consistentes presente ().

Mostrar detalle

  • Mostrar y similares, pero sustituyendo la vista de origen, y no hay botones de navegación hacia atrás.

presente Modalmente

  • Uso presente ()
  • Hay muchos de presentación diferente, se puede ajustar a voluntad. IPhone, generalmente en forma de animación a partir de la parte inferior para cubrir toda la pantalla, el usuario no puede interactuar con el objeto, a menos que desactive la vista actual, en el IPAD, comúnmente mostrada como un cuadro central, el centro de la caja a animado de lo siguiente pop-up, mientras que la parte inferior del obscurecer controlador de vista.
  • No proporciona un botón de retorno.

Presente como Popover

  • En el iPad, la vista de destino a una representación estilo de ventana flotante, haga clic en el área fuera de la vista de destino, el blanco de la visión desapareció, el iPhone, la vista predeterminada de la meta de cubrir todo el modo de pantalla.

GIF a continuación muestra los diferentes modos de Show y actual aparece en una nueva página:
Aquí Insertar imagen Descripción

3. transición inversa

Presente Modalmente no se proporciona botón de retorno, es necesario establecer la "transición inversa (segue de desenrollado)"

La necesidad de salir del controlador está programado para un método: Este método es solamente un tipo de parámetro debe ser UIStoryboardSegue, y hay una @IBAction modificador

@IBAction func close(segue:UIStoryboardSegue){
	let vc = segue.source as! ReviewViewController
	//反向传值
	print(vc.data)
}

Asociación especifica la transición inversa en el guión gráfico
en el botón Ctrl Cerca de vista de arrastrar la salida, la selección de cerca:
Aquí Insertar imagen Descripción

4. La transferencia de valor

En la primera override página preparar método, para ser llenado en vc.message la transferencia de datos.

    //使用SB连接转场每次都会触发下面方法
    override func prepare(segue: UIStoryboardSegue, sender: AnyObject?) {
        //可再每个连线处类似按钮的东西加上identifier,即可判断不同指向
        if segue.identifier == "segueIdentifier" {
 
            //不带导航的方式
             let vc = segue.destinationViewController as! nextVC
            //下个视图前了带了导航的方式
            //let nv_vc = segue.destinationViewController.childViewControllers[0] as! nextVC
            vc.message = "传值"
        }
    }

En segundo lugar, el salto entre viewController sin ningún tipo de archivos de diseño

1. En el ejemplo UIViewController

método presente () Descartar método (), respectivamente.

    //present方式
    let vc = SecondViewController()
    self.present(vc, animated: true, completion: nil)
	//dismiss方式
	self.dismiss(animated:true,completion:nil)	

2. En el ejemplo UINavigationController

pushViewController () método popViewController () método, respectivamente.

	let viewController = ViewController()
	self.navigationController?.pushViewController(viewController, animated:true)

Volver a la vista anterior

	self.navigationController?.popViewController(animated:true)
	//使用匿名变量可以消除“返回值未使用”警告
	_ = self.navigationController?.popViewController(animated:true)

Volver a la vista especificada

    //弹回根视图
    self.navigationController?.popToRootViewControllerAnimated(true)
    //指定位置
    self.navigationController?.popToViewController((self.navigationController?.viewControllers[0])!, animated: true)

En tercer lugar, el salto entre la interfaz Storyboard con viewController

    let sb = UIStoryboard(name: "Main", bundle:nil)
    let vc = sb.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
    
    self.presentViewController(vc, animated: true, completion: nil)

Nota: Recuerde que debe establecer StoryboardID, puede modificar el inspector Identificador de
Aquí Insertar imagen Descripción

En cuarto lugar, por valor

Valor pase hacia adelante

modo 1

En la primera interfaz para añadir una acción

@IBAction func touch(_ sender:AnyObject){
	let vc = ViewControllerTwo()
	vc.data = "第一个界面传入的数据"
	self.present(vc, animated:true, completion:nil)
}

Se utiliza en la segunda interfaz

override func viewDidLoad(){
	super.viewDidLoad()
	print(data)
}

modo 2

Para la segunda interfaz define un nuevo constructor

init(data:String){
	self.data = data
	super.init(nibName:nil, bundle:nil)
}

El nuevo método de construcción utilizando una primera interfaz para clases instanciar ViewControllerTwo

@IBAction func touch(_ sender:AnyObject){
	let vc = ViewControllerTwo(data:"第一个界面传入的数据")
	self.present(vc, animated:true, completion:nil)
}

valor de transferencia inversa

Valor mayor que el pase hacia adelante pase inversa para valores complejos, el protocolo utiliza generalmente en el desarrollo real o valor pase inversa para completar el cierre.

Modo de Uso Acuerdo 1

Crear un segundo protocolo de interfaz

protocol ViewControllerTwoProtocol {
	func setData(data:String)
}

var delegate:ViewControllerTwoProtocol?

Al hacer clic en el botón Atrás, un valor de paso

	func ret(){
		delegate?.sentData(data:"第二个界面返回的值")
		self.dismiss(animated:true, completion:nil)
	}

El primer método por el valor ViewControllerTwoProtocol interfaz para cumplir con el acuerdo, y para lograr un acuerdo

class ViewController:UIViewController:UIViewController,ViewControllerTwoProtocol{
	@IBAction func touch(_ sender:AnyObject){
		let vc = ViewControllerTwo(data:"第一个界面传入的数据")
		//设置代理
		vc.delegate = self
		self.present(vc, animated:true, completion:nil)
	}

	func sentData(data:String){
		print(data)
	}
}

Realización 2 Usando los cierres

La creación de un cierre en la segunda interfaz, y pasar el valor

	var closure:((String)->Void)?

	func ret(){
		self.closure!("第二个界面返回的值")
		self.dismiss(animated:true, completion:nil)
	}

Una primera interfaz para el cierre asignación

	@IBAction func touch(_ sender:AnyObject){
		let vc = ViewControllerTwo(data:"第一个界面传入的数据")
		//设置代理
		vc.closure = {(data:String) in
			print(data)
		}
		self.present(vc, animated:true, completion:nil)
	}
Publicado 43 artículos originales · ganado elogios 1 · vistas 1078

Supongo que te gusta

Origin blog.csdn.net/weixin_42046829/article/details/104752685
Recomendado
Clasificación