2017-12-02 2 views
0

Derzeit werden Miniaturen in UITableViewCell angezeigt und wenn ich auf eine Zelle tippe, möchte ich, dass das Bild im Vordergrund mit einer Kreuz/X-Schaltfläche oben rechts angezeigt wird, um das Bild zu schließen und tableView anzuzeigen. Ich habe den folgenden Code in didSelectRow:Wie bringe ich UIImageView beim Tippen auf eine tableViewCell in den Vordergrund?

let hoverImage = UIImageView() 
    hoverImage.image = UIImage(named: "splashpt") 
    hoverImage.contentMode = .scaleAspectFit 
    self.view.addSubview(hoverImage) 
    hoverImage.center = self.view.center 
    hoverImage.layer.zPosition = 5 
    self.view.bringSubview(toFront: hoverImage) 

Immer noch das Bild nicht angezeigt. Die Berechnung trifft diesen Abschnitt des Codes, da ich diesen Teil des Codes debuggen und schrittweise ausführen kann. Aber nichts zeigt sich auf dem Bildschirm. Ich verwende die zPosition AND bringSubview(toFront:) und keiner der scheinen für meine Anforderung zu arbeiten. Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

+0

Sie nicht den Rahmen für Imageview festgelegt haben, um den Rahmen gesetzt und versuchen. –

+1

@as diu Möchten Sie das Bild als Popup in der Tabellenansicht anzeigen? – Niroj

+0

@Niroj Ja, ich möchte ein Bild als Pop mit Pinch-Zoom und eine x-Taste, um das Bild zu schließen. Das versuche ich zu erreichen. –

Antwort

1

Dies ist eine Demo-Tabellenansicht. Beim Tippen auf die Tabellenansichtszellen wird eine Ansicht mit Schließen-Schaltfläche geöffnet. Und wenn Sie die Schließen-Taste drücken, wird die Popup-Ansicht geschlossen.

import UIKit 

class ViewController: UITableViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 


    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 5 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell 

    cell.textLabel?.text = "Happy" 
    return cell 
} 

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    print("Cell\(indexPath.row) is selected") 



    let storyBoard = UIStoryboard(name: "Main", bundle: nil) 
    let popoverVC = storyBoard.instantiateViewControllerWithIdentifier("PopViewController") as! PopViewController 
    popoverVC.delegate = parentViewController as? InfoViewDelegate 
    let nav = UINavigationController(rootViewController: popoverVC) 
    nav.modalPresentationStyle = UIModalPresentationStyle.Popover 
    nav.navigationBar.hidden = true 
    self.presentViewController(nav, animated: true) 
    { 

    } 
    popoverVC.passingViewController = self 

} 
} 

Dies ist ein PopUpViewController:

import UIKit 
protocol InfoViewDelegate: class 
{ 
func infoViewClicked(tag: Int) 
} 

class PopViewController :UIViewController 
{ 

@IBOutlet weak var btnClose: UIButton! 
var delegate = InfoViewDelegate?() 
var passingViewController: UIViewController! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func viewWillAppear(animated: Bool) { 
} 

override func viewDidDisappear(animated: Bool) { 
    self.presentingViewController?.dismissViewControllerAnimated(true 
     , completion: { 
    }) 
} 
/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
// Get the new view controller using segue.destinationViewController. 
// Pass the selected object to the new view controller. 
} 
*/ 
@IBAction func btnClicked(sender: UIButton) { 
    if(sender == self.btnClose) 
    { 
     self.delegate?.infoViewClicked(1) 
     self.presentingViewController?.dismissViewControllerAnimated(true 
      , completion: { 
     }) 
    } 

} 

} 

A table view

A simple view for Image

+0

Diese Antwort funktionierte perfekt für das, was ich suchte. Danke @Niroj –

+0

Kein Problem :) :) ... – Niroj

+0

können Sie bitte die Frage für mehr Sichtbarkeit abstimmen. Danke @Niroj –

Verwandte Themen