Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在内容视图中取消弹出视图?_Iphone_Objective C_Ios_Uipopovercontroller_Dismiss - Fatal编程技术网

Iphone 如何在内容视图中取消弹出视图?

Iphone 如何在内容视图中取消弹出视图?,iphone,objective-c,ios,uipopovercontroller,dismiss,Iphone,Objective C,Ios,Uipopovercontroller,Dismiss,看到屏幕截图就明白我的意思了 您可以看到我在弹出视图中添加了navigationItem 我希望我能摒弃流行观点 但它似乎只在弹出视图下显示单元格 弹出视图将被关闭,我尝试添加此方法 [self.view removeFromSuperview]; 它只删除了表视图,弹出视图框架仍然存在,只是没有内容视图 任何回复都会有帮助:) 谢谢 韦伯 /******编辑******/ 我在我的项目中使用 这是我在选择表视图时创建pop视图的代码 if (indexPath.row==2) { DaysO

看到屏幕截图就明白我的意思了 您可以看到我在弹出视图中添加了navigationItem

我希望我能摒弃流行观点

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

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

[self.view removeFromSuperview];
它只删除了表视图,弹出视图框架仍然存在,只是没有内容视图

任何回复都会有帮助:)

谢谢

韦伯

/******编辑******/ 我在我的项目中使用

这是我在选择表视图时创建pop视图的代码

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];
                        }
                    }
/******编辑2******/ 我尝试在创建弹出视图时添加“完成”按钮 下面是代码,但它只显示一个导航,没有“完成”按钮

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

添加弹出视图时,将标记设置为该弹出视图,然后将其添加为子视图

然后使用:

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

这将检索所有子视图,然后在添加弹出视图时仅删除您的popupview,将标记设置为该popupview,然后将其添加为子视图

然后使用:

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

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

我认为只需释放您的
self.popupOvercontroller
即可正确关闭,包括所有的超级视图

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

    [self dismissPopoverAnimated:NO];
    [contentViewController release];
    [containerViewProperties release];
    [passthroughViews release];
无论如何,我看到的唯一优势是可以使用
YES
调用
dismissPopoverAnimated

希望这有帮助

编辑:

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

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

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

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

我认为只需释放您的
self.popoverController
就可以正确地关闭,包括所有的SuperView

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

    [self dismissPopoverAnimated:NO];
    [contentViewController release];
    [containerViewProperties release];
    [passthroughViews release];
无论如何,我看到的唯一优势是可以使用
YES
调用
dismissPopoverAnimated

希望这有帮助

编辑:

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

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

 DaysOfWeek *popView = [[DaysOfWeek alloc]init];
 [propView.doneButton addTarget:self action:@selector(fullyDismissPopover) forControlEvents:UIControlEventTouchUpInside];
在fullyDismissPopover中,可以调用release或调用上面突出显示的函数序列(但我认为release会更好)

这也可以解决问题



这也可以解决问题

如何创建弹出视图?请发布一些代码,以便我们可以尝试帮助您…我添加代码如何创建popview,或者关于我错过了那部分您如何创建pop view?请发布一些代码,以便我们可以尝试帮助您…我添加了如何创建popview的代码,或者关于我想念partI在iphone中使用pop view,因此可能有些部分不同,我添加了我的代码,希望它能帮到您,仍然非常感谢您DaysOfWeek*popview=[[DaysOfWeek alloc]init];[popView设置标签:100];那么你想在哪里取消这个popView,然后使用下面的for循环,并指定100 for urTagI已经在表视图第2节的其他行中添加了此代码,问题是iphone视图太小,它将涵盖基于视图…没问题,保持登录到该聊天室并通过启用destop通知保持在那里以获得即时帮助…看,我在iphone中使用了pop view,因此可能有些部分有所不同,我添加了我的代码,希望它能帮上忙,仍然非常感谢您DaysOfWeek*popView=[[DaysOfWeek alloc]init];[popView设置标签:100];那么你想在哪里取消这个popView,然后使用下面的for循环,并指定100 for urTagI已经在表视图第2节的其他行中添加了此代码,问题是iphone视图太小,它将覆盖基于的视图…没问题,保持登录到该聊天室,并通过启用destop通知来获得即时帮助…查看([ApplicationLegate.aPopover isPopoverVisible]){[ApplicationLegate.aPopover dismissPopoverAnimated:YES];}“完成”按钮在另一个视图类中…如何调用超级视图控制器来取消它?popview不在AppDelegate中,在根视图控制器(TableView控制器)中,您不解释如何创建
ui按钮和包含它的视图,但方法是将视图控制器设置为点击的目标
addTarget:action:forControlEvents:
。在创建按钮时,您能找到一种方法吗?我声明按钮是在DaysOfWeek.mif([applicationelegate.aPopover ispopoovervisible]){[applicationelegate.aPopover dismissPopoverAnimated:YES];}“完成”按钮在另一个视图类中…如何调用超级视图控制器来取消它?popview不在AppDelegate中,在根视图控制器(TableView控制器)中,您不解释如何创建
ui按钮和包含它的视图,但方法是将视图控制器设置为点击的目标
addTarget:action:forControlEvents:
。当你创建按钮时,你能找到一种方法吗?我声明按钮是在DaysOfWeek.m创建的