2015-11-29 18 views
6

Pracuję więc nad prostą aplikacją, w której używam widoku tabeli. Ten widok tabeli wyświetla nazwę "graczy". Ale aby dodać graczy w widoku tabeli, chcę wyświetlić okno pop-up z polem tekstowym, w którym podajesz nazwę.Jak utworzyć niestandardowy wyskakujący widok z szybkim?

Teraz czytałem o tworzeniu pliku xib lub nib, ale nie jestem pewien, jak "załadować" wyskakujące okno.

Jakie jest najlepsze podejście do tego?

wygląda następująco:

Pop up View

enter image description here

Odpowiedz

10

chcesz utworzyć niestandardowe UIView ze wszystkimi szanowanego obiektu potrzebne, od swojej viewDidLoad kontrolera() będziesz go ukryć.

customView.hidden = true 

Gdy Twój użytkownik chce wykonać jakąś czynność lub zadanie, należy go odkryć, a gdy użytkownik zakończył następnie ukryć ponownie lub usunąć z Superview.

customView.hidden = false 

Poniżej jest jakiś kod, aby pomóc Ci rozpocząć

private var customView: UIView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     customView.hidden = true 
    } 

    private func loadCustomViewIntoController() { 
     let customViewFrame = CGRect(x: 0, y: 0, witdh: view.frame.width, height: view.frame.height - 200) 
     customView = UIView(frame: customViewFrame) 

     view.addSubview(customView) 

     customView.hidden = false 

     // any other objects should be tied to this view as superView 
     // for example adding this okayButton 

     let okayButtonFrame = CGRect(x: 40, y: 100, width: 50, height: 50) 
     let okayButton = UIButton(frame: okayButtonFrame) 

     // here we are adding the button its superView 
     customView.addSubview(okayButton) 

     okayButton.addTarget(self, action: #selector(self.didPressButtonFromCustomView:), forControlEvents:.TouchUpInside) 

    } 


    func didPressButtonFromCustomView(sender:UIButton) { 
     // do whatever you want 
     // make view disappears again, or remove from its superview 
    } 


    @IBAction func rateButton(sender:UIBarButtonItem) { 
     // this barButton is located at the top of your tableview navigation bar 
     // when it pressed make sure you remove any other activities that were on the screen, for example dismiss a keyboard 

      loadCustomViewIntoController() 
    } 

Sprawdź to ten github project, to zamknięte będzie gotowy do produkcji, to daje lepszy sposób na radzenie sobie (obecny i odrzucić) z UIViews

Jeśli chcesz tylko imię i nazwisko gracza, użyj numeru UIAlertController aining textfield

+0

Pracowałem nad tą opcją, problem polega na tym, że na tablicach jest trudny do wdrożenia, ponieważ pracuję z widokiem tabeli i nie ma gdzie umieścić "UIView". A przynajmniej nie wiem, jak to zrobić. Jeśli dodasz widok do góry, jest to widok nagłówka lub u dołu widok dla stopki. Dodam zrzut ekranu do oryginalnego posta o tym, co mam na myśli. –

+0

nie trzeba przeciągać UIView na szczycie widoku tabeli ... można utworzyć UIView za pomocą kodu Czy chcesz zobaczyć przykład? – Lamar

+0

Proszę ... O tym myślałem. –

8

W serii ujęć

  • W ujęć utworzenia jednego UIViewController i zaprojektować go w zależności od zapotrzebowania.
  • Set custom klasy jako anotherViewController i Storyboard_ID jak another_view_sid
  • Załóż nowy Cocoa Class akcent anotherViewController i podklasy UIViewController

W viewController

let popvc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "another_view_sid") as! anotherViewController 

    self.addChildViewController(popvc) 

    popvc.view.frame = self.view.frame 

    self.view.addSubview(popvc.view) 

    popvc.didMove(toParentViewController: self) 

W anotherViewController

override func viewDidLoad() { 
    super.viewDidLoad() 
     showAnimate() 
    } 
} 

@IBAction func Close_popupView(_ sender: Any) { 
    removeAnimate() 
} 

func showAnimate() 
{ 
    self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3) 
    self.view.alpha = 0.0 
    UIView.animate(withDuration: 0.25, animations: { 
     self.view.alpha = 1.0 
     self.view.transform = CGAffineTransform(scaleX: 1.0, y: 1.0) 
    }) 
} 

func removeAnimate() 
{ 
    UIView.animate(withDuration: 0.25, animations: { 
     self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3) 
     self.view.alpha = 0.0 
    }, completion: {(finished : Bool) in 
     if(finished) 
     { 
      self.willMove(toParentViewController: nil) 
      self.view.removeFromSuperview() 
      self.removeFromParentViewController() 
     } 
    }) 
} 
+0

bardzo ładne, działa! –

Powiązane problemy