当我添加更多项目时,滑动手势无效

时间:2015-06-19 06:29:03

标签: ios swift swipe-gesture

在我的应用中,我使用了class controller: UIViewController, UITableViewDelegate, UITableViewDataSource { var array = [AnyObject]() var check = false @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() var rightButton : UIBarButtonItem = UIBarButtonItem(image: UIImage(named: "edit"), style: UIBarButtonItemStyle.Done, target: self, action: "editClicked") self.editing = !self.editing rightButton.tintColor = UIColor.whiteColor() self.navigationItem.rightBarButtonItem = rightButton var leftButton : UIBarButtonItem = UIBarButtonItem(image: UIImage(named: "settings"), style: UIBarButtonItemStyle.Plain, target: self, action: "settingsClicked") leftButton.tintColor = UIColor.whiteColor() self.navigationItem.leftBarButtonItem = leftButton } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return array.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell: CustomCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! CustomCell let object = array[indexPath.row] as! NSString cell.editCell(object, delete: check) cell.button.addTarget(self, action: "deleteClicked", forControlEvents : UIControlEvents.TouchUpInside) return cell } 但是当我添加更多项目时,我的应用崩溃并且滑动手势无法正常工作。我不知道该怎么做。在我的视图控制器中我有

func addClicked () {

    check = true

    var alert = UIAlertController(title: "add", message: "", preferredStyle: UIAlertControllerStyle.Alert)

    alert.addTextFieldWithConfigurationHandler({ (textField) -> Void in textField.text = ""

    })

    alert.addAction(UIAlertAction(title: "confirm", style: .Default, handler: { (action) -> Void in

        let textField = (alert.textFields![0] as! UITextField).text as String

        if textField != "" {

            self.array.insert(textField, atIndex: 0)

            let indexPath = NSIndexPath(forRow: 0, inSection: 0)

            self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        }

    }))

    alert.addAction(UIAlertAction(title: "cancel", style: .Cancel, handler: {

        (ACTION) -> Void in

    }))

   self.presentViewController(alert, animated: true, completion: nil)

   self.tableView.reloadData()
}

这是我用来添加项目的功能

class CustomCell: UITableViewCell {

    @IBOutlet weak var label: UILabel!

    @IBOutlet weak var view: UIView!

    @IBOutlet weak var toBuy: UIImageView!

    @IBOutlet weak var atHome: UIImageView!

    @IBOutlet weak var button: UIButton!

    var gesture, check: Bool!

    override func awakeFromNib() {
        super.awakeFromNib()

        var leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
        var rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))

        leftSwipe.direction = .Left
        rightSwipe.direction = .Right

        self.addGestureRecognizer(leftSwipe)
        self.addGestureRecognizer(rightSwipe)

        gesture = false;
        check = false
    }


    func handleSwipes(sender:UISwipeGestureRecognizer) {

        if (gesture == false) && (check == true){

            if (sender.direction == .Left) {

                gesture = true;

                var labelPosition = CGPointMake(self.view.frame.origin.x - 55.0, self.view.frame.origin.y);

                UIView.animateWithDuration(0.5, animations: {

                    self.view.frame = CGRectMake( labelPosition.x , labelPosition.y , self.view.frame.size.width, self.view.frame.size.height)

                }, completion: { (value: Bool) in

                    self.gesture = false;

                })
            }

            if (sender.direction == .Right) {

                gesture = true;

                var viewPosition = CGPointMake(self.view.frame.origin.x + 55.0, self.view.frame.origin.y);

                UIView.animateWithDuration(0.5, animations: {

                    self.view.frame = CGRectMake( viewPosition.x , viewPosition.y , self.view.frame.size.width, self.view.frame.size.height)

                }, completion: { (value: Bool) in

                    self.gesture = false;

                })
            }

        }
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }

install.packages("maps")
install.packages("mapdata")
library(maps)
library(mapdata)
# create the main map
map("world2Hires",
    ylim=c(-17,-11),xlim=c(121, 126),
    fill=TRUE, col="grey")
maps::map.scale( 124.6,-16.65, ratio=FALSE, relwidth=0.15)
box()
# create the inset
par(fig = c(.60, 1, .60, 1), mar=c(0,0,0,0))
map("world2Hires",
    ylim=c(-40,-0),xlim=c(110, 155),
    fill=TRUE, col="grey")
box()

1 个答案:

答案 0 :(得分:0)

我在你的代码中看到了MVC违规。请将滑动手势处理程序添加到控制器而不是View(即)自定义单元格。

因此,handleSwipeMethod将移动到“controller”