2011-11-27 74 views
0

我試圖創建一個普通視圖中一個子視圖子視圖。當這個子視圖中包含一個按鈕被點擊時,它將翻轉並顯示一個新的子視圖。這將意味着模擬一張卡片在桌子上翻轉。我有一個DetailViewController是空的廈門國際銀行,但是當它的加載它加載名爲CardFrontViewController另一個控制器,它實際上包含子視圖(卡的正面)全部包含在廈門國際銀行。一旦子視圖內的按鈕,它應該加載包含在CardBackViewController xib內的子視圖。的UIView transitionWithView多XIB文件

內DetailViewController

- (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]; 
} 

內CardFrontViewController

- (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]; 
} 

當我點擊按鈕,翻轉卡片,卡片翻轉,但顯示的視圖是空的,這意味着自.cardBackViewController.cardBackSubView不在裏面加載。 如果我做[self.cardFrontContainerView addSubview: self.cardBackViewController.view]翻轉卡的方法裏面加載了整個廈門國際銀行裏面,但我真的只是想內部的視圖。我不知道這裏要做什麼。

回答

2

你並不需要一個UIViewController如果你想要的只是加載一個視圖,用一些IBOutlets。

只需從DetailViewController開始使用[[NSBundle mainBundle] loadNibNamed:@"myViewNib" owner:self options:nil],並且如果對應於新卡'NIB'存在,它們將自動鏈接到(所有者)。

如果你真的想要一個不同的類來處理這個'卡'(和'擁有'的IBOutlets)是否需要繼承UIViewControllerNSObject有時候也是一個很好的候選人。

最後,如果你真的想窩UIViewControllers,這隻會在iOS5的工作。 爲了支持以前的iOS版本,你最終將不得不手動調用一些UIViewController的生命週期方法(willAppear, didAppear ...),通過某些事件從你掌握的UIViewController其detailViewController(如willAnimateToRotation),也許其他一些技巧。

+0

我覺得我想要做的東西是比較簡單的,只是一種觀點認爲,可以使用兩個xib翻到視圖中的另一個視圖,爲什麼它很複雜,爲什麼很難在線查找資源?根據你的回答,似乎並不像我想要做的是做到這一點。 – 5StringRyan

+0

然後只需使用UIView!你可以調用上面的方法('loadNibNamed:')來加載一個特定的View類,它有自己的插座 – Vinzzz

相關問題