2012-12-03 2 views
2

특정 제품에 대한 세부 정보가있는 탐색 컨트롤러가 있습니다. 자세한 내용 중 하나는 제품의 작은 이미지입니다. 이제 제품의 확대 이미지가있는보기 컨트롤러로 이동해야하는 버튼을 추가하고 싶습니다.다른보기로 전환하지만 탐색 컨트롤러에 유지

확대 된 이미지가 세부 정보 화면과 동일한 내비게이션 컨트롤러에 있고 화면의 전환이 전환되지만 헤더와 탭 표시 줄이 뒤집히지 않도록하려면 어떻게해야합니까?

네비게이션 컨트롤러에서 두 개의보기에 대한 개요 이미지를 추가했습니다.

UIView.Transition(this.NavigationController.View, 1f, 
UIViewAnimationOptions.CurveEaseInOut | UIViewAnimationOptions.TransitionFlipFromRight, 
delegate { this.NavigationController.PushViewController(this.ImageViewController, false); }); 

대신 기본 전환의의 navogation 컨트롤러에 밀려 점점 때 이미지보기에 이성을 상실하도록하려면 :

enter image description here

답변

2

당신은 같은 것을 사용할 수 있습니다. ImageViewController의 title 속성은 사용자 세부 정보의 title 속성과 동일해야합니다.

UINavigationController의 아이디어는 여러 컨트롤러를 처리하는 것이므로보기를 겹쳐서 작업하지 않아야합니다.

+0

농담을해야합니다. 너는 나를 30 초 동안 때렸다. :) – holmes

+0

나는 일찍 길을 시작했지만 대답을 끝내는 것을 잊어 버렸으므로, 적어도 15 분 동안 패배했다. :-) – Krumelur

+0

나는 전환 코드를 사용했는데, 홈즈의 해결책과 함께 작동하지만 뒤집기 전환에서 나는 짧은 시간 동안 검은 색 화면을 가지고 플립보기의 뒷면도 검은 색이면서 어디로 가야하는지 볼 수 없습니다. 이 기본 동작입니까? – Renzzs

1

컨트롤러에 두 개의보기를 추가하고 프레임 속성에 애니메이션을 적용하여 원하는 효과를 얻습니다.
아래 예를 참조하십시오.

using System; 
using System.Collections.Generic; 
using System.Linq; 

using MonoTouch.Foundation; 
using MonoTouch.UIKit; 
using System.Drawing; 

namespace delete20121203 
{ 
    // The UIApplicationDelegate for the application. This class is responsible for launching the 
    // User Interface of the application, as well as listening (and optionally responding) to 
    // application events from iOS. 
    [Register ("AppDelegate")] 
    public partial class AppDelegate : UIApplicationDelegate 
    { 
     // class-level declarations 
     UIWindow window; 

     // 
     // This method is invoked when the application has loaded and is ready to run. In this 
     // method you should instantiate the window, load the UI into it and then make the window 
     // visible. 
     // 
     // You have 17 seconds to return from this method, or iOS will terminate your application. 
     // 
     public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
     { 
      // create a new window instance based on the screen size 
      window = new UIWindow (UIScreen.MainScreen.Bounds); 

      var ctrl = new MyViewController(); 
      var nav = new UINavigationController (ctrl); 

      window.RootViewController = nav; 


      // make the window visible 
      window.MakeKeyAndVisible(); 

      return true; 
     } 
    } 

    public class MyViewController : UIViewController 
    { 
     UIButton _button1; 
     UIButton _button2; 
     UIView _view1; 
     UIView _view2; 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
      Title = "Test"; 

      _view1 = new UIView (View.Bounds); 
      _view1.AutoresizingMask = UIViewAutoresizing.All; 
      _view1.BackgroundColor = UIColor.White; 

      _button1 = UIButton.FromType (UIButtonType.RoundedRect); 
      _button1.Frame = new System.Drawing.RectangleF (10, 10, 150, 44); 
      _button1.SetTitle ("Click", UIControlState.Normal); 
      _button1.TouchUpInside += Button1Click; 

      _view2 = new UIView (View.Bounds); 
      _view2.AutoresizingMask = UIViewAutoresizing.All; 
      _view2.BackgroundColor = UIColor.LightGray; 
      RectangleF hideRect = _view2.Frame; 
      hideRect.X = hideRect.X + hideRect.Width; 
      _view2.Frame = hideRect; 

      _button2 = UIButton.FromType (UIButtonType.RoundedRect); 
      _button2.Frame = new System.Drawing.RectangleF (10, 10, 150, 44); 
      _button2.SetTitle ("Back", UIControlState.Normal); 
      _button2.TouchUpInside += Button2Click; 

      _view1.Add (_button1); 
      _view2.Add (_button2); 

      View.Add (_view1); 
      View.Add (_view2); 
     } 

     void Button1Click (object sender, EventArgs e) 
     { 
      UIView.Animate (.5f, 0, UIViewAnimationOptions.CurveEaseInOut, delegate { 
       _view2.Frame = View.Frame; 

       RectangleF hideRect = _view1.Frame; 
       hideRect.X = hideRect.X - hideRect.Width; 
       _view1.Frame = hideRect; 
      }, 
      null); 
     } 

     void Button2Click (object sender, EventArgs e) 
     { 
      UIView.Animate (.5f, 0, UIViewAnimationOptions.CurveEaseInOut, delegate { 
       RectangleF hideRect = _view2.Frame; 
       hideRect.X = hideRect.X + hideRect.Width; 
       _view2.Frame = hideRect; 

       _view1.Frame = View.Frame; 
      }, 
      null); 
     } 
    } 
} 
+0

솔루션을 Krumelur의 코드와 결합하면 플립 트랜지션이 생깁니다 (솔루션을 복사하여 붙여 넣으면 플립 애니메이션을 얻지 않고 슬라이드 애니메이션 만 얻을 수 있습니다). 하지만 나는 사용자 인터페이스를 항상 프로그래밍 할 필요가 없도록 Storyboards를 사용하고 있습니다. 이제는 이미지와 하나의 버튼으로 뷰를 코딩하는 것이 큰 문제는 아닙니다. 스토리 보드를 사용하여이를 수행하는 방법에 대한 정보는 무엇입니까? – Renzzs

+0

내가 아는 한 스토리 보드는 초기 레이아웃에만 도움이 될 것입니다. ViewDidLoad의 모든 코드는 XCode 편집기에서 얻을 수 있습니다. Button1Click 및 Button2Click에 대한 작업을 만들어야합니다. 또한 _view1 및 _view2에 대해 콘센트를 추가해야합니다. – holmes

관련 문제