我正在使用xcode 5处理iOS项目。我需要在弹出窗口中显示一个选项表,因此我使用了一个容器视图,并通过segue将其称为弹出窗口。现在问题是我想在其中选择一行时关闭(不仅仅是消失)容器视图。 请指导我如何实现它。谢谢。
答案 0 :(得分:0)
建议使用弹出窗口而不是UIAlertView。但是如果要求使用弹出视图,您可以简单地显示/隐藏容器视图控制器的视图!
答案 1 :(得分:0)
我终于找到了解决方案,这不是可行的解决方案,但是让我免于对项目进行重大更改。我做的是 -
我使用unwind segue将子弹出容器中的值传回主控制器。为此,我介绍了两种方法,首先是:容器视图控制器中的prepareForSegue方法 -
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"CommentOptionToComments"])
{
APMCommentsViewController *objCommentController=(APMCommentsViewController *)segue.destinationViewController;
for(APMOption *obj in self.optionList)
{
if(obj.IsAnswer)
{
NSString *dataToPassBack=[NSString stringWithFormat:@"%d",obj.Number];
self.passBackToParent=dataToPassBack;
}
}
NSLog(@"Return to parent");
}
}
另一个是ParentViewController中的unwindSegue方法 -
-(IBAction)unwindToList:(UIStoryboardSegue *)segue
{
//get the value from the segue and use it as per your requirement
APMCommentsOptionViewController *source=[segue sourceViewController];
self.lblHiddenResponse.text=source.passBackToParent;
}
但不要忘记在ParentViewController.h文件中声明unwind segue。
现在我所做的是将我的原型单元连接到故事板中的展开segue并给unwindsegue一个标识符名称(存在于Utility区域中)
但问题是在调用didSelectRowAtIndexPath之前调用了展开segue,尽管弹出窗口能够自行关闭但无法将所需的值发送到ParentViewController。 为此,我在方法didSelectRowAtIndexPath中再次调用prepareForSegue,语法如 -
[self performSegueWithIdentifier:@"CommentOptionToComments" sender:self];
正如我所说它不是一个可行的解决方案,但这最终解决了我的问题,但如果我使用UIPopOverController会更简单。