Objective c UIView transitionWithView具有多个xib文件的子视图
我正在尝试在常规视图中创建子视图。单击此子视图中包含的按钮时,它将翻转并显示新的子视图。这将是为了模拟一张卡片在桌子上翻转。我有一个DetailViewController,它是一个空的xib,但当它加载时,它会加载另一个名为CardFrontViewController的控制器,该控制器实际上包含所有包含在xib中的子视图(卡的前面)。在子视图中单击按钮后,应加载CardBackViewController xib中包含的子视图 内部详细视图控制器Objective c UIView transitionWithView具有多个xib文件的子视图,objective-c,uiview,uiviewcontroller,ios5,Objective C,Uiview,Uiviewcontroller,Ios5,我正在尝试在常规视图中创建子视图。单击此子视图中包含的按钮时,它将翻转并显示新的子视图。这将是为了模拟一张卡片在桌子上翻转。我有一个DetailViewController,它是一个空的xib,但当它加载时,它会加载另一个名为CardFrontViewController的控制器,该控制器实际上包含所有包含在xib中的子视图(卡的前面)。在子视图中单击按钮后,应加载CardBackViewController xib中包含的子视图 内部详细视图控制器 - (void)viewDidLoad {
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
if (!self.cardFrontViewController)
{
self.cardFrontViewController = [[CardFrontViewController alloc] initWithNibName: @"CardFrontViewController" bundle: nil];
[self.view addSubview: self.cardFrontViewController.view];
}
[self configureView];
}
- (IBAction)flipToAnswerCard:(id)sender
{
if (!self.cardBackViewController)
{
self.cardBackViewController = [[CardBackViewController alloc] initWithNibName: @"CardBackViewController" bundle: nil];
}
[UIView transitionWithView: self.cardFrontContainerView
duration: 1.0
options: UIViewAnimationOptionTransitionFlipFromTop
animations: ^{ [self.cardFrontSubView removeFromSuperview];
[self.cardFrontContainerView addSubview: self.cardBackViewController.cardBackSubView]; }
completion: nil];
}
内置卡FrontView控制器
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
if (!self.cardFrontViewController)
{
self.cardFrontViewController = [[CardFrontViewController alloc] initWithNibName: @"CardFrontViewController" bundle: nil];
[self.view addSubview: self.cardFrontViewController.view];
}
[self configureView];
}
- (IBAction)flipToAnswerCard:(id)sender
{
if (!self.cardBackViewController)
{
self.cardBackViewController = [[CardBackViewController alloc] initWithNibName: @"CardBackViewController" bundle: nil];
}
[UIView transitionWithView: self.cardFrontContainerView
duration: 1.0
options: UIViewAnimationOptionTransitionFlipFromTop
animations: ^{ [self.cardFrontSubView removeFromSuperview];
[self.cardFrontContainerView addSubview: self.cardBackViewController.cardBackSubView]; }
completion: nil];
}
当我单击按钮翻转卡时,卡会翻转,但显示的视图为空,这意味着self.cardBackViewController.cardBackSubView未载入其中。
如果我在flip card方法中执行
[self.cardFrontContainerView addSubview:self.cardBackViewController.view]
操作,它会在内部加载整个xib,但我真的只需要内部视图。我不知道该怎么办 如果您只想加载一个带有一些iboutlet的视图,那么就不需要UIViewController
只需从您的DetailViewController
中使用[[NSBundle mainBundle]loadNibNamed:@“myViewNib”所有者:自选项:nil]
,如果存在与ne“卡”NIB对应的IBOutlets
,它们将自动链接(到所有者)
如果您真的想要一个不同的类来处理这个“卡”(并且“拥有”IBOutlets),它是否一定需要从UIViewController
继承NSObject
有时也是一个很好的候选对象
最后,如果您真的想嵌套UIViewController,那么这只适用于iOS5。
为了支持以前的iOS版本,您最终必须手动调用某些UIViewController的生命周期方法(
willbeen,didbeen
…),将某些事件从主UIViewController传递到其detailViewController(如willAnimateToRotation
),以及其他一些技巧 如果您只想加载一个带有一些iboutlet的视图,那么就不需要UIViewController
只需从您的DetailViewController
中使用[[NSBundle mainBundle]loadNibNamed:@“myViewNib”所有者:自选项:nil]
,如果存在与ne“卡”NIB对应的IBOutlets
,它们将自动链接(到所有者)
如果您真的想要一个不同的类来处理这个“卡”(并且“拥有”IBOutlets),它是否一定需要从UIViewController
继承NSObject
有时也是一个很好的候选对象
最后,如果您真的想嵌套UIViewController,那么这只适用于iOS5。
为了支持以前的iOS版本,您最终必须手动调用某些UIViewController的生命周期方法(
willbeen,didbeen
…),将某些事件从主UIViewController传递到其detailViewController(如willAnimateToRotation
),以及其他一些技巧 如果您只想在主视图中翻转子视图,我的答案在此处找到:如果您只想在主视图中翻转子视图,我的答案在此处找到:我觉得我正在尝试做一些相对简单的事情,仅仅是一个可以使用两个XIB在视图中翻转到另一个视图的视图,为什么它如此复杂,为什么很难在网上找到资源?根据你的回答,我想做的似乎不是这样做的。那么就用UIView吧!你可以调用上面的方法(loadNibNamed:
)来加载一个特定的视图类,它有自己的outlets。我感觉我正在尝试做一些相对简单的事情,只是一个视图,可以使用两个XIB在视图中翻转到另一个视图,为什么它如此复杂,为什么很难在线找到资源?根据你的回答,我想做的似乎不是这样做的。那么就用UIView吧!您可以调用上面的方法(loadNibNamed:
)来加载特定的视图类,它有自己的输出