2013-01-05 35 views
0

在我的UIViewController名爲MainViewController,我有一個名爲SubViewController的另一個UIViewController的引用。它的定義如下:添加'UIView`作爲子視圖最初是緩慢的

@class SubViewController; 

@interface MainViewController : UIViewController <UIScrollViewDelegate> { 
    SubViewController * _subViewController; 
} 

在我MainViewControllerinitWithNibName:bundle:方法,我初始化我SubViewController如下:

#pragma mark - Init 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; { 
    if((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])){ 
    _subViewController = [[SubViewController alloc] initWithNibName:@"SubViewController" bundle:nil[; 

    // Forces the view to load, in an attempt to speed up the adding of the subview. 
    UIView * view = _subViewController.view; 
    view.alpha = 1.0f; 
    } 
    return self; 
} 

SubViewControllerviewDidLoad方法不會被調用,一切似乎是加載,但是當我加入SubViewController作爲一個子視圖:

- (IBAction)showButtonPressed:(UIButton *)aButton; { 
    [self.view addSubview:_subViewController.view]; 
} 

的應用程序放慢幾秒鐘,然後添加子視圖,一切都很好。奇怪的是,當我刪除子視圖,並嘗試再次重新添加它,有沒有延遲

我認爲這個問題是一個加載一個,但我無法找到如何解決這個問題的任何文件。

誰能解釋是什麼原因造成這種慢下來?謝謝!

+1

幾秒鐘是** **真的很長一段時間。您可能希望使用工具來確定發生了什麼,而不是專門查看加載視圖。 –

+0

我同意,它*真的**很長時間。樂器告訴我沒有什麼可悲的。有什麼特別的我應該尋找? – msgambel

+1

在儀器上運行時間分析器,啓動應用程序,您應該看到一個尖峯。停止它,然後在下面的區域中,繼續點擊左邊最高毫秒的事物的三角形。最終你應該可以理解。 – WolfLink

回答

0

你的代碼它不是完整的!

我嘗試把你的代碼,使新項目-ARC-其欣然,我在所有 嘗試沒有延遲用儀器發現什麼發生

+0

那麼顯然有在'SubViewController'的佈局更多的代碼。例如,它有一個'UIScrollView',我在'UIViews'上添加了一些。我想知道是否有其他人有類似的問題。 – msgambel

0

我從未有過這樣的問題。因爲你在說如果你不加載第二個視圖,它運行得更快。檢查,看看是什麼在viewWillAppear中和viewDidAppear爲secondViewController

相關問題