modal ios objective-c uiviewcontroller popup

ios - show modal swift 3



Interfaz de usuario personalizada: ventana emergente en iOS Objective-C (4)

Cree una vista personalizada con xib y agregue una subvista de su controlador de vista actual.

hacer instancia de propiedad de popupView

en su viewController.h

@property (strong,nonatomic) YourPopUpViewClass *popupView;

en su viewController.m

establecer vista emergente

self.popUpView.hidden = YES; self.popUpView.frame = [UIScreen mainScreen].bounds; self.popUpView.alpha = 0.0; self.popUpView.delegate = self; // for hide PopupView and Other Functinality if you need [self.view addSubview:self.popUpView];

Ahora, el botón Mostrar en, haz clic con la animación

-(void)showPopupView{ self.popUpView.hidden = No; [UIView animateWithDuration:0.0 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^ { self.popUpView.alpha = 0.0 }completion:^(BOOL finished) { [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^ { self.popUpView.alpha = 1.0 }completion:^(BOOL finished) { }]; }]; }

Y Hide así

-(void)hidePopupView { self.popUpView.hidden = No; [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^ { self.popUpView.alpha = 0.0 }completion:^(BOOL finished) { self.popUpView.hidden = Yes; }]; }

Espero que esto te ayudará.

Quiero crear una ventana emergente personalizada y quiero generar un código de forma dinámica sin usar la interfaz de usuario arrastrar y soltar.

La vista debería verse así:

Estoy usando el siguiente código para llamar al menú emergente:

CustomPopUp *cp = [[CustomPopUp alloc]init]; cp.view.frame = CGRectMake(0.0, 0.0, 300, 300); KLCPopup* popup = [KLCPopup popupWithContentView:cp.view]; [popup show];

El código emergente personalizado se ve así:

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.gaScreenName = @"Login"; if (firstPageLoad) { return; } LinearLayoutPageHeading *heading = [[LinearLayoutPageHeading alloc] initWithText:@"Sign in." maxWidth:[LayoutValues getMaxWidthClipped]]; [self.topContainerContent addObject:heading]; NSString *content = @"New patient? Register here."; LinearLayoutLinksViewItem *contentItem = [[LinearLayoutLinksViewItem alloc] initLinksViewWithText:content font:[PPFonts genericParagraphFont] maxWidth:[LayoutValues getMaxWidthClipped] links:nil]; [self.topContainerContent addObject:contentItem]; LinearLayoutTextInputAndLabel *emailField = [[LinearLayoutTextInputAndLabel alloc] initWithLabelText:@"EMAIL ADDRESS" maxWidth:[LayoutValues getMaxWidthClipped]]; emailField.textField.autocapitalizationType = UITextAutocapitalizationTypeNone; LinearLayoutButton *continueButton = [[LinearLayoutButton alloc] initWithText:@"SIGN IN" maxWidth:[LayoutValues getMaxWidthClipped] url:nil type:@"primary"]; [self.topContainerContent addObject:continueButton]; LinearLayoutLinksViewItem *noticesPar = [[LinearLayoutLinksViewItem alloc] initLinksViewWithText:@"By clicking Sign In you agree to our Consent to Telehealth, Consent to Request Medical Services, Privacy Policy and Terms of Use." font:[PPFonts signInTermsParagraph] maxWidth:[LayoutValues getMaxWidthClipped] links:nil]; noticesPar.padding = CSLinearLayoutMakePadding(0, noticesPar.padding.left, 10, noticesPar.padding.right); [self.topContainerContent addObject:noticesPar]; [self renderPageContainers]; firstPageLoad = YES; } @end

Estoy usando un controlador de vista creado personalizado, pero estoy recibiendo una ventana emergente en blanco.

¿Hay alguna forma de obtener el diseño anterior utilizando UIViewController estándar? Soy nuevo en el desarrollo de iOS y hasta ahora no he generado dinámicamente vistas de IU.



Si CustomPopUp es un controlador de vista, necesita instanciarlo con un guión gráfico vc o un xib, algo como esto:

//For xib: let a = UIViewController(nibName: "CustomPopUp", bundle: NSBundle.mainBundle()) as! CustomPopUp //For storyboard let b = UIStoryboard(name: "main", bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier("CustomPopup") as! CustomPopUp

No estoy totalmente seguro de cómo se enfrenta a esto, pero le recomendé que cree una vista personalizada, no un controlador de vista personalizado, más fácil de crear y usar


Encontré una solución factible. Utilicé una biblioteca de terceros para lograr el resultado KLCPopup

Sin embargo, tengo una nueva pregunta. Mi ventana emergente tiene una vista personalizada pero proviene de una clase (vista) separada. ¿Cómo cambio mi vista actual en función de la entrada a la vista emergente? ¿Puedo tener enlaces a algunos documentos útiles? No necesito código, solo necesito apuntar en la dirección correcta.