2014-01-24 60 views
0

在我的應用程序中,我有一個表視圖中的項目列表。點擊其中一個,該應用程序顯示該項目的詳細信息。細節出現後,通過導航控制器的後退按鈕,應用程序返回列表。使用輕掃手勢更改視圖時維護導航控制器 - iphone

在詳細視圖中,我實現了一個方法來滑動手勢,以便將視圖更改爲列表的第二個元素的細節等。有用。

改變視圖的方法是:

- (void)oneFingerSwipeLeft:(UITapGestureRecognizer *)recognizer { 

    int idx=currentIdx; 

    if (idx ==[todasLasTapas count]-1) { //last object vuelvo al primero 
     idx= -1; 
    } 


    ClassInfo *info =[allInfo objectAtIndex:idx+1]; 

    //VIEW CONTROLLER 
    MoreInfo *moreInfoController =[[MoreInfo alloc]initWithNibName:@"MoreInfoController" bundle:nil]; 

    //passing the details to view 
    moreInfoController.id   = info.uniqueId; 
    moreInfoController.name  = info.name; 

    // CHANGE TO NEXT VIEW 
    moreInfoController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:moreInfoController animated:YES]; 

} 

的問題是「第二」視圖顯示時導航控制器消失。我的想法是,導航仍然是爲了回到主表列表。

有人可以幫我嗎?

回答

1

不幸的是呈現模態視圖控制器發生在UINavigationController堆棧之外。因此,當您調用presentModalViewController時,您將在UINavigationController管理的控制器堆棧之外將控制器引入屏幕。

您可以保留大部分實現,但只需將MoreInfo的視圖作爲子視圖添加到當前視圖,即可切換出模式視圖控制器的顯示。

如果您希望更優雅地保留內存,只需在兩個UIView(當前顯示的視圖和下一個顯示的視圖 - 將從最後一個詳細視圖重用)之間切換。

這裏是你的代碼的更新版本,可以這樣做:

- (void)oneFingerSwipeLeft:(UITapGestureRecognizer *)recognizer { 
    int idx=currentIdx; 
    if (idx ==[todasLasTapas count]-1) { //last object vuelvo al primero 
     idx= -1; 
    } 
    ClassInfo *info =[allInfo objectAtIndex:idx+1]; 
    //VIEW CONTROLLER 
    MoreInfo *moreInfoController =[[MoreInfo alloc]initWithNibName:@"MoreInfoController" bundle:nil]; 

    //passing the details to view 
    moreInfoController.id = info.uniqueId; 
    moreInfoController.name = info.name; 
    [UIView transitionFromView:self.view 
         toView:moreInfoController.view 
         duration:2 
         options:UIViewAnimationOptionTransitionCrossDissolve 
        completion:^(BOOL finished) { 
         [self.view removeFromSuperview]; 
        }]; 
} 

這裏有一個職位,說明如何實現自定義動畫溶解到另一個的UIView:

How to make dissolve animation on changing views on iphone?

+0

是,這個想法是去列表,而不是以前的細節。 – doxsi

+0

好的,我更新了我的帖子 –

+0

Tx很多obuseme。如何將MoreInfo的視圖添加爲子視圖? – doxsi