2012-08-03 104 views
0

我想建立我的自定義segue,行爲類似於標準推塞格,但在我的情況下,我想使用自定義按鈕來切換屏幕(沒有選項卡欄將適合此應用程序,任何模態賽格也不好)。主屏幕是自定義圖形,屏幕可以繼續顯示爲地圖。用戶選擇地圖上的點,點擊完成,並返回主屏幕及其座標。 我想連接ViewControllers與自定義segue。自定義segue推後像按鈕

我在互聯網上研究了很多解決方案,發現了一個可以適用的解決方案,但代碼遍佈ViewControllers和AppDelegate(我不確定Apple是否會接受它)。我試圖把整個代碼放到CustomSegue.m/h。成功是部分原因,因爲使用技術(下)它繼續了第二個ViewControler,但我無法弄清楚如何消除第二個並返回到主屏幕。我嘗試了各種技術,但是當我運行它時,編譯器會終止帶有一堆錯誤的應用程序。在構建和運行之前,無論是錯誤還是警告。我也嘗試用[self dismissModalViewControllerAnimated:YES]按鈕解僱它;或[self dismissViewControllerAnimated:YES completion:nil];他們工作時,我嘗試模態賽格但與我的代碼結果不好。

有沒有人有這樣一個整潔的方式的建議。在過去的幾天裏,我一直在解決這個問題。我看到很多應用程序都在進行轉換,所以它似乎是相當流行,簡單的解決方案。我對Xcode只有幾個月沒有太多經驗。 這是我的自定義segue(與QuartzCore動畫)。

#import "CustomTabBarSegue.h" 

@implementation CustomTabBarSegue 


-(void)perform { 
    UIViewController *src = (UIViewController*)[self sourceViewController]; 
    UIViewController *dst = (UIViewController*)[self destinationViewController]; 

    UIView *currentView = src.view; 
    UIView *theWindow = [currentView superview]; 
    UIView *newView = dst.view; 
    [theWindow addSubview:newView]; 

    CATransition *transition = [CATransition animation]; 

    transition.delegate = self; 
    transition.duration = 1; 

    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    transition.type = kCATransitionMoveIn; 
    transition.subtype = kCATransitionFromRight; 


    [[theWindow layer] addAnimation:transition forKey:@"MySegue"]; 
} 

@end 

下面是從目標VC返回的按鈕代碼。 (不工作)

- (IBAction)dismiss:(id)sender 

{

[self dismissViewControllerAnimated:YES completion:^() { 
    [self performSegueWithIdentifier:@"MySegue" sender:self]; 
}]; 

}

回答

8

我想我可以理解你正在嘗試做的。如果我錯了,請糾正我。你想去一個視圖,然後點擊返回按鈕來回來。正確?用故事板做到這一點很容易。將NavigationController作爲您的初始視圖,並將導航控制器的根視圖控制器設置爲主菜單。從那裏你要做一個PUSH賽車,然後回去你想做一個POP。

調用push segue是調用segue的正常方式,但流行有點不同。彈出一個視圖的代碼是:[self.navigationController popViewControllerAnimated:YES];。返回到根視圖控制器的代碼是:[self.navigationController popToRootViewControllerAnimated:YES];

我相信這是你想要做的。無需定製賽車。

+0

對不起,英語我的第二語言,在這個我是我的IOS冒險的初學者ish階段的頂部。我對你的回答的問題是:推你是否可以建立沒有頂級酒吧。頂欄會摧毀整個效果。是否有可能你可以發佈一些代碼或鏈接到一個準備好的例子?我會感激不盡。謝謝。 – 2012-08-03 17:51:52

+0

如果您單擊導航控制器添加到故事板並轉到它的設置,您可以取消選中顯示頂部欄。 – 2012-08-04 00:23:29

+0

工程真的很棒。非常感謝。看起來有時最困難的是最簡單的解決方案。 – 2012-08-04 18:04:20