我有一个主视图控制器(嵌入在导航控制器中),它有一个标签,我放置了一个按钮。当我单击按钮时,它将转到下一个包含文本视图和两个按钮的视图控制器。两个按钮取消和发布。取消按钮只需要带我到主视图控制器。 Post应该带我到主视图控制器,文本是我在文本视图中写的。但当我按下任一按钮时它正在崩溃。 对于取消按钮,我写了代码:
- (IBAction)cancelButton:(id)sender {
NewRequestViewController *back=[[UIStoryboard storyboardWithName:@"Main" bundle:nil]
instantiateViewControllerWithIdentifier:@"NewRequestViewController"];
[self.navigationController pushViewController:back animated:NO];
}
对于按钮,我编写了如下代码:
- (IBAction)postComment:(id)sender {
_parent.commentBox.text=_textView.text;
[self.navigationController popViewControllerAnimated:YES];
}
其中commentBox是标签下方按钮的出口。
崩溃报告说: 在意外状态下完成导航过渡。导航栏子视图树可能已损坏。
请有人帮我解决这个问题。 谢谢你的帮助。
答案 0 :(得分:0)
将此用于取消按钮事件。
-(IBAction)cancelPressed:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
要将文本数据发布到目标View Controller,您可以像这样使用prepareForSegue
方法。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
DestinationViewController *destController = [segue destinationViewController];
destController._yourTextView.text == _yourText.text;
}
}
此处,yourTextView是要在DestinationViewController上声明的TextView属性,并在源控制器中导入其.h文件,并将其指定为当前文本值,如上所示。
由于您使用按钮IBAction发布数据,因此您需要在按钮IBAction中使用performSegueWithIdentifier
方法。像这样:
- (IBAction)postComment:(id)sender {
[self performSegueWithIdentifier:@"yourSegueIdentifier" sender:nil];
}
这将自动调用prepareForSegue
,它将显示您的目标View Controller。
希望这有帮助。
答案 1 :(得分:0)
尝试使用以下代码进行取消操作:
[self.navigationController popViewControllerAnimated:YES];
对于发布操作,我建议您使用Unwind Segues
http://www.absoluteripple.com/1/post/2013/08/using-ios-storyboard-segues.html
答案 2 :(得分:0)
如何从主视图控制器导航到下一个视图控制器。如果使用storyboard segue意味着检查:
我认为您使用push segue从mainviewcontroller导航到下一个视图控制器。 使用模态segue导航我认为它适用于你。
答案 3 :(得分:0)
对于取消按钮 - >
您可以使用[self.navigationController popViewControllerAnimated:YES];
和
对于发布按钮 - >
您希望将一些文本传递给父视图控制器,因此您可以拥有父视图实现的子视图控制器的委托方法,并且可以在popViewControllerAnimated之前将该文本从子委托方法传递给父视图。