如何通过按下来自子视图的按钮来使用 popViewController Animated 弹出视图?

Posted

技术标签:

【中文标题】如何通过按下来自子视图的按钮来使用 popViewController Animated 弹出视图?【英文标题】:How to pop a view using popViewControllerAnimated by pressing on a button which is from a subview? 【发布时间】:2011-09-17 11:36:09 【问题描述】:

我正在创建一个照片浏览器。

用户从UITableView 中选择一个单元格,然后使用UINavigationController 将它们推送到照片浏览器视图。

在我的“PhotoBrowser.m”中,我有:

    //Caption UIView
    CGRect capFrame = CGRectMake(1024-400, 0, 400, 768);
    overlayWindow = [[UICaptionOverlay alloc] initWithFrame:capFrame];
    overlayWindow.backgroundColor = [UIColor clearColor];
    [self addSubview:overlayWindow];

我调用一个子视图并将内容覆盖在我的图像上。即在一系列照片上添加标题。

在我的子视图“UICaptionOverlay.m”中,我有一个按钮:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(25, 300, 200, 50)];
button.backgroundColor = [UIColor blueColor];
[button setTitle:@"Return to Table View" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonPressedClose) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:button];
[button release];

这会在我的照片上方显示一个带有一些标签和一个按钮的UIView

按下按钮时,如何将用户带回UITableView,并选择另一个单元格?

我可以打电话:

[photoBrowser performSelector:@selector(popViewControllerToTable) withObject:nil afterDelay:0.2];

来自“PhotoBrowser.m”,所以我知道至少可以弹出视图。

popViewControllerToTable 有 [self.navigationController popViewControllerAnimated:YES];

提前感谢大家..

【问题讨论】:

【参考方案1】:

最简单的方法是在 UICaptionOverlay 实例中保留对父 viewController 的引用。

然后在buttonPressedClose 选择器中调用它:

[self.myParentViewController.navigationController popViewControllerAnimated:YES];

【讨论】:

谢谢!在 UICaptionOverlay 中使用 [self.superview.buttonPressClose]; 在 PhotoBrowser.m 中调用另一个 buttonPressClose,它运行 [self.navigationController popViewControllerAnimated:YES]; 现在工作正常。再次感谢!

以上是关于如何通过按下来自子视图的按钮来使用 popViewController Animated 弹出视图?的主要内容,如果未能解决你的问题,请参考以下文章

按下按钮时为单个视图添加子视图

如何通过让子视图 UIButton 获取新闻事件?

如何禁用子视图上的 IBAction 按钮

如果我们在后台点击任何地方,除了在 swift 中点击 popView 之外,如何删除 popView

如何从子视图中隐藏信息按钮?

在子视图中按下按钮时应用程序崩溃