Custom Push Segue elimina la barra de navigation y la barra de tabs en el tablero de historia

Tengo lo siguiente definido en una Segue personalizada, llamémosla SegueX:

@interface SegueX : UIStoryboardSegue @end @implementation SegueX - (void)perform { CATransition* transition = [CATransition animation]; transition.duration = 0.3; transition.type = kCATransitionFade; [[self.sourceViewController navigationController].view.layer addAnimation:transition forKey:kCATransition]; [[self.sourceViewController navigationController] pushViewController:[self destinationViewController] animated:NO]; } @end 

En mi tablero de historia, acabo de cambiar una SegueX estándar de Push a SegueX. Por alguna razón esto eliminará mi barra de navigation y la barra de tabs. Además, todos los UIBarButtonItems que he definido en el tablero de historia después de que se oculten los segue personalizados en time de ejecución. ¿Cómo puedo solucionar esto? Espero que no sea así …

Antes de cambiar a una segue personalizada

Antes de cambiar a una segue personalizada

Después de cambiar a una segue personalizada

Después de cambiar a una segue personalizada

introduzca la descripción de la imagen aquí

Guarde esto en Main.storyboard

 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4514" systemVersion="13A603" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="aUj-3O-DdX"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3747"/> </dependencies> <scenes> <!--Navigation Controller--> <scene sceneID="prC-ky-DMz"> <objects> <navigationController definesPresentationContext="YES" id="aUj-3O-DdX" sceneMemberID="viewController"> <navigationBar key="navigationBar" contentMode="scaleToFill" id="2Uu-Rm-RXH"> <autoresizingMask key="autoresizingMask"/> </navigationBar> <toolbar key="toolbar" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="aOK-Kc-Mfz"> <rect key="frame" x="0.0" y="416" width="320" height="44"/> <autoresizingMask key="autoresizingMask"/> </toolbar> <connections> <segue destination="PDT-yG-B9z" kind="relationship" relationship="rootViewController" id="w27-w2-lcd"/> </connections> </navigationController> <placeholder placeholderIdentifier="IBFirstResponder" id="fNx-r3-Dzg" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="-65" y="-179"/> </scene> <!--View Controller--> <scene sceneID="kMj-Al-ZjY"> <objects> <viewController id="PDT-yG-B9z" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="RKt-BS-gn9"/> <viewControllerLayoutGuide type="bottom" id="eFe-fv-bG6"/> </layoutGuides> <view key="view" contentMode="scaleToFill" id="JbT-x8-qhX"> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <subviews> <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fTw-C6-P3N"> <rect key="frame" x="137" y="269" width="46" height="30"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <state key="normal" title="Button"> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> </state> <connections> <segue destination="uMi-ds-4FY" kind="custom" id="mPL-yx-hFQ"/> </connections> </button> </subviews> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> </view> <navigationItem key="navigationItem" id="Im9-4G-4Ga"/> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="qXF-QN-k3Z" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="473" y="-177"/> </scene> <!--View Controller--> <scene sceneID="ca6-vg-B3h"> <objects> <viewController id="uMi-ds-4FY" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="jd0-A9-WOV"/> <viewControllerLayoutGuide type="bottom" id="5VJ-sS-U1V"/> </layoutGuides> <view key="view" contentMode="scaleToFill" id="gJp-P2-rUC"> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> </view> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="pih-Kj-ioJ" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="1003" y="-179"/> </scene> </scenes> <simulatedMetricsContainer key="defaultSimulatedMetrics"> <simulatedStatusBarMetrics key="statusBar"/> <simulatedOrientationMetrics key="orientation"/> <simulatedScreenMetrics key="destination" type="retina4"/> </simulatedMetricsContainer> </document> 

La barra de navigation y la barra de herramientas deben desaparecer en el guión gráfico cuando cambias la segue, eso es normal. Puede cambiar las métricas simuladas para la barra inferior a "Barra de herramientas translúcida", que lo agregará, para que pueda agregarle botones (solo quiere cambiar las métricas simuladas, no arrastrarlas en otra barra de herramientas que agregaría un segundo barra de herramientas) Aún debe ver ambas barras con sus botones en time de ejecución.

Intenta verificar si has configurado en el guión gráfico una opción como
introduzca la descripción de la imagen aquí
Que las métricas se infieren en el controller de vista empujada (pero estoy bastante seguro de que no count).
introduzca la descripción de la imagen aquí

Y / o fuerce la barra de navigation y la barra inferior para que sean visibles mediante progtwigción usando, dentro de la vista -viewWillAppear del controller de vista empujada

 [self.navigationController setNavigationBarHidden:NO animated:NO]; [self.navigationController setToolbarHidden:NO animated:NO]; 
 (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { ViewController * controller = [[ViewController alloc]init]; controller.hidesBottomBarWhenPushed=YES; if ([segue.identifier isEqualToString:@"Commentsegue"]) { //For hiding the tab bar [segue.destinationViewController setHidesBottomBarWhenPushed:YES]; } }