我想建立我的自定義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];
}];
}
對不起,英語我的第二語言,在這個我是我的IOS冒險的初學者ish階段的頂部。我對你的回答的問題是:推你是否可以建立沒有頂級酒吧。頂欄會摧毀整個效果。是否有可能你可以發佈一些代碼或鏈接到一個準備好的例子?我會感激不盡。謝謝。 – 2012-08-03 17:51:52
如果您單擊導航控制器添加到故事板並轉到它的設置,您可以取消選中顯示頂部欄。 – 2012-08-04 00:23:29
工程真的很棒。非常感謝。看起來有時最困難的是最簡單的解決方案。 – 2012-08-04 18:04:20