1

看截图很清楚明白我的意思 在此处输入图像描述 你可以看到我在我的弹出视图中添加了一个导航项

我希望我可以关闭弹出视图

但它似乎只在弹出视图下的单元格

弹出视图将关闭,我尝试添加此方法

[self.view removeFromSuperview];

它只删除了表格视图,弹出视图框架仍然存在,只是没有内容视图

任何回复都会有所帮助:)

谢谢

韦伯

/******EDIT******/ 我在我的项目中使用WEPopoverView

这是我选择表格视图时创建弹出视图的代码

if (indexPath.row==2) {
DaysOfWeek *popView = [[DaysOfWeek alloc]init];
UINavigationController *navPopView = [[UINavigationController alloc] initWithRootViewController:popView];
    if (self.popoverController) {
       [self.popoverController dismissPopoverAnimated:YES];
       self.popoverController = nil;
}
else {
        self.popoverController = [[[WEPopoverController alloc] initWithContentViewController:navPopView] autorelease];
        CGRect frame = [tableView cellForRowAtIndexPath:indexPath].frame;
        [self.popoverController presentPopoverFromRect:frame 
                                                    inView:self.view            permittedArrowDirections:UIPopoverArrowDirectionDown|UIPopoverArrowDirectionUp
                                  animated:YES];
                        }
                    }

/******EDIT2******/ 我在创建弹出视图时尝试添加完成按钮这里是代码,但它只出现一个导航,没有完成按钮

DaysOfWeek *popView = [[DaysOfWeek alloc]init];
UINavigationController *navPopView = [[UINavigationController alloc] initWithRootViewController:popView];
navPopView.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(hidePopView)];
4

3 回答 3

1

添加弹出视图时,将标签设置为该弹出视图,然后将它们添加为子视图,

然后使用:

for (UIView *tempView in [self.view subviews]) {
    if ([tempView tag]==urTag) {
        [tempView removeFromSuperview];
    }
}

这将检索所有子视图,然后仅删除您的弹出视图

于 2011-06-30T08:21:55.947 回答
0

我认为简单地释放你的self.popoverController意志就可以正确地解雇,包括所有的超级意见。

您还可以查看中的dealloc方法WEPopoverController以查看涉及哪些视图并且需要删除:

    [self dismissPopoverAnimated:NO];
    [contentViewController release];
    [containerViewProperties release];
    [passthroughViews release];

无论如何,我看到的唯一优势是可以dismissPopoverAnimated使用YES.

希望这可以帮助。

编辑:

如何将完成按钮连接到控制器?

DaysOfWeek通过;的只读属性使您的按钮可访问 然后在您的控制器中,当您创建时DaysOfWeek,请执行以下操作:

 DaysOfWeek *popView = [[DaysOfWeek alloc]init];
 [propView.doneButton addTarget:self action:@selector(fullyDismissPopover) forControlEvents:UIControlEventTouchUpInside];

在fullyDismissPopover 中,您调用release 或调用上面突出显示的函数序列(但我认为release 会更好)。

于 2011-06-30T09:03:47.603 回答
0
 DaysOfWeek *popView = [[DaysOfWeek alloc]init];
UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeContactAdd];
[doneButton addTarget:self action:@selector(hidePopView) forControlEvents:UIControlEventTouchUpInside];
popView.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:doneButton] autorelease];
UINavigationController *navPopView = [[UINavigationController alloc] initWithRootViewController:popView];

这也能解决问题!

于 2011-07-01T03:55:20.460 回答