Swift - 桌面视图黑屏?

时间:2015-06-23 05:48:17

标签: ios swift uitableview

我尝试在用户与ActivityViewController共享后呈现TableViewController。这是我的方法:

 @IBAction func share(sender: UIBarButtonItem) {
        var   memeedimage = generateMemedImage()

        let activityViewController = UIActivityViewController(activityItems:[memeedimage] , applicationActivities: nil)
        presentViewController(activityViewController, animated: true, completion: nil)

        activityViewController.completionWithItemsHandler = {
            (activity, success, returneditems, error) in
            println("Activity: \(activity) Success: \(success) Items: \(returneditems) Error: \(error)")
            self.save()
            activityViewController.dismissViewControllerAnimated(true, completion: nil)


            let memevc:MemeTableViewController  = MemeTableViewController()
            self.presentViewController(memevc, animated: true, completion: nil)
        }

我已经解雇了activityviewcontroller,self.presentviewcontroller指的是提供activityViewController的viewthatcontroller。但是,一旦用户完成共享,我就会得到黑屏。

这是为什么?我相信这是因为我的桌面视图没有正确加载。

这是我的MemeTableViewController代码:

import UIKit

class MemeTableViewController : UIViewController,UITableViewDelegate,UITableViewDataSource
{
    var memesz: [MemeObject]!

    @IBOutlet var tableView: UITableView!

    override func viewWillAppear(animated: Bool) {            
            super.viewWillAppear(animated)
            let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
            memesz = appDelegate.memes
            //tableView.reloadData()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationController?.hidesBarsOnSwipe = true
        navigationController?.hidesBarsOnTap = true            
    }

    //reserves the number of rows needed to display the image
       func tableView(tableView : UITableView, numberOfRowsInSection section : Int)->Int
       {
            println("ARE YOU SERIOUS")
            return memesz.count
        }

    //Reserves the row to be dequeued for display
     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {            
        let cell:TableViewzCell = tableView.dequeueReusableCellWithIdentifier("MemesCell", forIndexPath: indexPath) as! TableViewzCell
        let memezrow =  memesz[indexPath.row]
        cell.label1.text = memezrow.textFieldtop
        cell.label2.text = memezrow.textFieldbottom
        cell.imageview.image = memezrow.memedImage
        println("Why is this not being called")

            return cell
    }

    //Method to do something when the row is selected
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        let detailController = self.storyboard!.instantiateViewControllerWithIdentifier("FullScreenMeme") as! FullScreenMeme
        detailController.meme = memesz[indexPath.row]
        self.navigationController!.pushViewController(detailController, animated: true)
        println("This too")
    }
}

1 个答案:

答案 0 :(得分:0)

试试这个,

@IBAction func share(sender: UIBarButtonItem) {
    var   memeedimage = generateMemedImage()


    let activityViewController = UIActivityViewController(activityItems:[memeedimage] , applicationActivities: nil)
    presentViewController(activityViewController, animated: true, completion: nil)


    activityViewController.completionWithItemsHandler = {
        (activity, success, returneditems, error) in
        println("Activity: \(activity) Success: \(success) Items: \(returneditems) Error: \(error)")
        self.save()
        activityViewController.dismissViewControllerAnimated(true, completion: { () -> Void in

        let memevc:MemeTableViewController  = MemeTableViewController()
        self.presentViewController(memevc, animated: true, completion: nil)

    })
}