2012-06-27 48 views
2

所以我試圖在我的應用程序中實現ECSlidingViewController示例。 github source for this在ECSlidingViewController中,如何禁用從屏幕滑出的頂視圖

我想要修改它的唯一方法是防止TopView在它更改包含的視圖之前完全滑出屏幕,而只是保持TopView就位,但更新它包含的視圖與它是從菜單中選擇的新視圖控制器。 Facebook的應用程序正是我想要的,如果這聽起來令人困惑。

四處尋找項目中一段時間​​後,我已經決定了它絕對(顯然)有事情做這一行的代碼在ECSlidingViewController.h:

- (void)anchorTopViewOffScreenTo:(ECSide)side animations:(void(^)())animations onComplete:(void(^)())complete; 

我看着這個地方被調用的.M:

- (void)anchorTopViewOffScreenTo:(ECSide)side{ 
[self anchorTopViewOffScreenTo:side animations:nil onComplete:nil]; 
} 

- (void)anchorTopViewOffScreenTo:(ECSide)side animations:(void(^)())animations onComplete:(void(^)())complete 
{ 
CGFloat newCenter = self.topView.center.x; 
if (side == ECLeft) { 
newCenter = -self.resettedCenter; 
} else if (side == ECRight) { 
newCenter = self.screenWidth + self.resettedCenter; 
} 

[self topViewHorizontalCenterWillChange:newCenter]; 

[UIView animateWithDuration:0.25f animations:^{ 
if (animations) { 
    animations(); 
} 
[self updateTopViewHorizontalCenter:newCenter]; 
} completion:^(BOOL finished){ 
if (complete) { 
    complete(); 
} 
_topViewIsOffScreen = YES; 
[self addTopViewSnapshot]; 
dispatch_async(dispatch_get_main_queue(), ^{ 
    NSString *key = (side == ECLeft) ? ECSlidingViewTopDidAnchorLeft : ECSlidingViewTopDidAnchorRight; 
    [[NSNotificationCenter defaultCenter] postNotificationName:key object:self userInfo:nil]; 
}); 
}]; 
} 

這是我猜的動畫被告知如何製作動畫,但我不知道如何任何這可以告訴它移動摘屏幕。我可以忽略一些簡單的東西來代替nil?也許還有其他價值的地方我還沒有找到?這是我在StackOverflow上的第一個問題,儘管我一般都是新來的Obj-C,但我對它的工作原理有很好的把握。所以我希望至少得到一個正確方向的提示。謝謝!

回答

6

只需使用下面的方法

- (void)anchorTopViewTo:(ECSide)side animations:(void (^)())animations onComplete:(void(^)())complete

,而不是

- (void)anchorTopViewOffScreenTo:(ECSide)side animations:(void(^)())animations onComplete:(void(^)())complete

+0

搜索和替換 「self.slidingViewController anchorTopViewOffScreenTo:ECRight」 到 「self.slidingViewController anchorTopViewTo:ECRight」 在'changeTopViewController的方法在MenuViewController.m工作。謝謝! –

+0

這應該是正確的答案。謝謝你幫了我很多。 – Daniel

1

如果只是要刪除的話,而不是調用的彈跳:

[self anchorTopViewOffScreenTo:side animations:nil onComplete:nil]; 

c所有直接:

[self.slidingViewController resetTopView]; 
相關問題