如何在swift中长按UITableViewCell来调用另一个控制器?

时间:2015-12-18 14:07:59

标签: ios swift uitableview uilongpressgesturerecogni

我使用以下代码显示MyEditViewController,但MyEditViewController中的所有字段出口都是 nil ,因为此行let editController = MyEditViewController()。我在这里创建新实例。所以网点现在 nil 。有没有其他方法可以调用编辑控制器而不创建它的实例?

@IBAction func editMethod(sender: UILongPressGestureRecognizer) {
        if sender.state == UIGestureRecognizerState.Began {
            let cell = sender.view as! MyTableViewCell
            let editController = MyEditViewController()
            editController.sample= samples[cell.tag]
            presentViewController(editController, animated: true, completion: nil)
        }
    }

2 个答案:

答案 0 :(得分:1)

你应该发起一个不是一个类,你应该从Storyboard中将它作为一个ViewController启动。所以在你的情况下设置一个" Storyboard-ID"为您的控制器。

enter image description here

然后使用:

    private void load_file_Click(object sender, RoutedEventArgs e)
    {
        System.Windows.Forms.OpenFileDialog fDialog = new System.Windows.Forms.OpenFileDialog();
        fDialog.Filter = "Rich Text Files (*.rtf)|*.rtf";
        fDialog.Multiselect = false;
        fDialog.RestoreDirectory = true;
        if (fDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            if (fDialog.FileName != "")
            {
                FileStream fStream;
                fStream = new FileStream(fDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);

                richtextbox1.SelectAll();
                richtextbox1.Selection.Load(fStream, DataFormats.Rtf);
                fStream.Close();
            }
        }

    }

所以所有网点都应该正常工作。

答案 1 :(得分:1)

要使用插座实例化新控制器,您可以使用xib

let editController = MyEditViewController(nibName: "MyEditViewController", bundle: nil)

或者您可以将StoryboardId归因于您的控制器并与instantiateViewControllerWithIdentifier一起使用

let editController = storyboard?.instantiateViewControllerWithIdentifier("MyEditViewControllerStoryboardId") as! MyEditViewController

或者作为您案例的建议,您可以使用故事板segues使用不同的方法。 Read more about it here

performSegueWithIdentifier("PresentMyEditController", sender: self)