我使用以下代码显示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)
}
}
答案 0 :(得分:1)
你应该发起一个不是一个类,你应该从Storyboard中将它作为一个ViewController启动。所以在你的情况下设置一个" Storyboard-ID"为您的控制器。
然后使用:
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)