2011-07-02 64 views
3

在我的iPhone上已經存在的UIViewController的頂部添加UIViewController的最佳方式是什麼?我知道有兩種方法。但是有更好的方法嗎?如果不是,哪一個更好?將UIViewController添加到另一個UIViewController的最佳方式

1. [self presentModalViewController:controller animated:NO]; 
2. [self.view addSubview:someController.view]; 

回答

1
[[self view] addSubview: [otherViewController view]]; 

CGRect frame = [[self view] frame]; 

int direction = 1; 
switch (direction) { 
    case 0: // from bottom 
     frame.origin.y = [[self view] frame].size.height; 
     [[otherViewController view] setFrame: frame]; 
     frame.origin.y = 0.0 - [[self view] frame].size.height; 
     break; 
    case 1: // from right 
     frame.origin.x = [[self view] frame].size.width; 
     [[otherViewController view] setFrame: frame]; 
     frame.origin.x = 0.0 - [[self view] frame].size.width; 
     break; 
} 

[UIView animateWithDuration: 1.0 
         delay: 0.0 
        options: UIViewAnimationOptionCurveEaseInOut 
       animations:^{ 
        [[self view] setFrame: frame]; 
       } 
       completion: ^(BOOL finished) { 

       } 
]; 
-1

取決於你想要什麼。沒有一種方法比另一種更好。所有隻是...方式。

2

這取決於你想如何實現它。如果要顯示視圖控制器並使用現有的轉換將其解除,可以使用presentModalViewController。但是,如果您想用一些自定義動畫來顯示它,則可以使用addSubView。而且,這完全取決於你。

+0

所以,如果我有一個UIViewController,我想添加一個子視圖,我怎麼能動畫它?例如,讓UIButton從右側飛入? – StanLe

+0

@StanLe,你可以使用UIView動畫。看到這個鏈接,http://objcolumnist.com/2009/07/18/simple-uiview-based-animations-on-the-iphone/ – EmptyStack

0

兩種方式,幾乎是等同的,因爲做出的意見堆棧,你可以通過看下面的視圖(直到沒有鹼性),[self removeFromSuperview],當你addSubView,並[self dismissModalViewControllerAnimated:YES];,當溜溜使用[self presentModalViewController:tempView animated:NO];,但是的presentModalViewController,給你動畫的默認選項是否與addSubview,你需要工作一點。

相關問題