activityViewController

activityViewController

在用户完成与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的ViewThat控制器。但是,一旦用户完成共享,我就得到一个黑屏。
这是为什么?我想是因为我的tableview没有正确加载。
这是我的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")
    }
}

最佳答案

试试这个,

@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)

    })
}

08-26 10:28