iPhone:views仅在从其他视图返回时显示
iPhone:views仅在从其他视图返回时显示,iphone,ios,Iphone,Ios,视图将出现在转到视图和从其他视图返回视图时都被调用 我只想在从其他视图返回时选择(高亮显示)并淡出单元格 是否有委托方法来执行此操作 我正在使用UINavigationViewController。在您的UINav控制器中,您可以创建一个“lastView”属性,并让每个视图控制器(由您的UINav控制器控制)将此属性设置为“ViewWillDisplay”。。。在你的目标视图中。。。要进行高亮显示和淡入淡出的那个,可以检查UINav控制器的这个属性,看看它是否为零 这只是一种方法。如果你弹出一
视图将出现
在转到视图和从其他视图返回视图时都被调用
我只想在从其他视图返回时选择(高亮显示)并淡出单元格
是否有委托方法来执行此操作
我正在使用UINavigationViewController。在您的UINav控制器中,您可以创建一个“lastView”属性,并让每个视图控制器(由您的UINav控制器控制)将此属性设置为“ViewWillDisplay”。。。在你的目标视图中。。。要进行高亮显示和淡入淡出的那个,可以检查UINav控制器的这个属性,看看它是否为零
这只是一种方法。如果你弹出一个模态或者类似的东西,这是行不通的 视图出现时,将调用ViewWillDisplay
- 在视图加载之后
- 关闭或拉取视图控制器后
- (void) viewWillAppear:(BOOL)animated
{
static BOOL firstTime = YES;
if (!firstTime)
{
//Do your alpha animation
}
firstTime = NO;
}
如果您的目标是iOS 5,您可以使用
[self-isBeingPresented]
和[self-isbeingdisposed]
来确定视图控制器是否正在添加或从导航控制器中删除
我还怀疑,当您在表视图中选择/取消选择单元格时,您可以改进逻辑,这样视图控制器是来还是去都不重要
通常的做法是:当有人在视图控制器a的表视图中选择一行时,它会被选中/高亮显示,然后您推送一个新的视图控制器B。当视图控制器B被解除时,您可以在
viewdide
中设置取消选中表视图行的动画(这样用户可以看到它逐渐消失)在视图控制器A中。您不必担心视图控制器A是否刚刚出现或正在重新出现,因为在适当的情况下,只有选定的表视图单元格。如果您使用的是iOS 5,则可以使用以下新属性:
这四种方法可用于视图控制器的外观
回调以确定是否显示、取消或添加
或作为子视图控制器删除。例如,视图控制器
可以检查它是否因为被删除或弹出而消失
通过在其视图中询问自身,将消失:方法通过检查
表达([self ismissing]| |[self]
isMovingFromParentViewController])
在代码中:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (!(self.isMovingToParentViewController || self.isBeingPresented))
{
// animate
}
}
编辑:
如果您使用的是
UITableViewController
,将属性-clearselectiononviewwillappear
设置为YES
将为您执行此操作。如果使用常规的UIViewController
和UITableView
子视图,则只需手动执行此操作。谢谢。if
中的代码仅在从其他视图返回时执行。但是在第二次访问此视图时,firstTime已经是YES(因为它是静态的),并且如果执行了,则中的代码已被执行。如果firstTime
是视图的属性,它可能会工作。是的,如果您是正确的,您可以将firstTime更改为当前class@Ryder谢谢你的好办法。我尝试了你的代码,但在进入视图时,只有self.isMovingToParentViewController是YES,从其他视图返回时,所有4个属性都是NO。所以如果(!self.isMovingToParentViewController)
对我有效。是这样吗?我正在使用UITableViewController。但我需要高亮显示/淡出与我在视图中选择的单元格不同的单元格。我已经发布了关于这个的问题:@RyderMackay我搜索过了<代码>正在显示
用于模式isMovingToParentViewController
适用于navi。因此,如果是错误的,但是|
是正确的,那么内部的&&
可能是错误的。就我而言,只有!我移动到ARENTVIEWCONTROLLER
就足够了。谢谢。在我的例子中,某人在视图控制器B中选择了一行,而不是a。我在问题中解释了这一点:对不起,你是对的。我不需要知道我是否也会回到视野中。当self.tableView.indexPathForSelectedRow
为空时,我所要做的就是选择/取消选择视图B中选择的新单元格。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (!(self.isMovingToParentViewController || self.isBeingPresented))
{
// animate
}
}