2014-12-08 2 views
0

Я программирую приложение на Xamarin.IOS. У меня есть вкладка Layout, как для моего основного вида, и все UIElements установлены в Storyboard. Теперь, что мне нужно сделать, потому что я хочу реализовать IAds, Я хочу, чтобы мое приложение было разделенным представлением, с контроллером представления IAd в виде подробного представления и моим обычным TabbedLayout в качестве основного вида.Xamarin.IOS Добавить Splitview в приложение с вкладками

Так что, да, мой конкретный вопрос будет:

Как все моя Компоновка загружается из раскадровки: Как я могу передать экземпляр View, которая загружается обычно на мой SplitViewController?

Любые советы, которые вы можете дать, полезны, мне действительно нужно это для моей работы!

Чтобы обеспечить некоторый код:

Я пытаюсь загрузить мой первоначальный вид (который является TabBarController), как это в AppDelegate.cs:

 SplitViewContoller splitView = new SplitViewContoller(); 
     IADViewController iAdVC = new IADViewController (splitView); 
     Console.WriteLine ("Root" + Window.RootViewController); 
     Window.RootViewController = iAdVC; 

Это работает отлично, за исключением того, что просмотр, который обычно появляется, не загружается ... Отображается IAD, но остальная часть экрана - пустой TabBarController.

Вот мой SplitViewController:

public class SplitViewContoller : UISplitViewController 
{ 
    UIViewController masterView, detailView; 

    public SplitViewContoller() : base() 
    { 
     // create our master and detail views 
     masterView = new TabBarController(); 
     detailView = new IADViewController (new TabBarController()); 
     // create an array of controllers from them and then 
     // assign it to the controllers property 
     ViewControllers = new UIViewController[] 
     { masterView, detailView }; // order is important 
    } 

    public override bool ShouldAutorotateToInterfaceOrientation 
    (UIInterfaceOrientation toInterfaceOrientation) 
    { 
     return true; 
    } 
} 

мнение, что я хочу быть в нижней части моего экрана: (см Monotouch.Dialog and iAds подробности)

public partial class IADViewController : UIViewController 
{ 
    private UIViewController _anyVC; 
    private MonoTouch.iAd.ADBannerView _ad; 

    public IADViewController (UIViewController anyVC) 
    { 
     _anyVC = anyVC; 
    } 

    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 

     View.AddSubview (_anyVC.View); 

     Version version = new Version (MonoTouch.Constants.Version); 
     if (version > new Version (6,0)) 
     { 


      try { 
       _ad = new MonoTouch.iAd.ADBannerView (MonoTouch.iAd.ADAdType.Banner); 
       _ad.Hidden = true; 
       _ad.FailedToReceiveAd += HandleFailedToReceiveAd; 
       _ad.AdLoaded += HandleAdLoaded; 
       View.BackgroundColor = UIColor.Clear; 
       _anyVC.View.Frame = View.Bounds; 
       View.AddSubview (_ad); 
      } catch { 
      } 
     } else { 
      Resize(); 
     } 
    } 

    public override void DidRotate (UIInterfaceOrientation fromInterfaceOrientation) 
    { 
     base.DidRotate (fromInterfaceOrientation); 
     Resize(); 
    } 

    public override void ViewDidAppear (bool animated) 
    { 
     base.ViewDidAppear (animated); 
     Resize(); 
    } 

    void Resize() 
    { 

     UIView.Animate (.25, 
      () => { 
       if (_ad !=null && _ad.Hidden == false) { 
        _anyVC.View.Frame = new RectangleF (0, 0, this.View.Bounds.Width, this.View.Bounds.Height - _ad.Frame.Height); 
       } else { 
        _anyVC.View.Frame = View.Bounds; 
       } 
      }); 
     if(_ad!=null) 
      _ad.Frame = new RectangleF (0, _anyVC.View.Bounds.Height, this.View.Bounds.Width, _ad.Frame.Height); 
    } 

    void HandleAdLoaded (object sender, EventArgs e) 
    { 
     if (_ad == null) 
      return; 
     _ad.Hidden = false; 
     Resize(); 
    } 

    void HandleFailedToReceiveAd (object sender, AdErrorEventArgs e) 
    { 
     if (_ad == null) 
      return; 
     _ad.Hidden = true; 
     Resize(); 
    } 
} 

ответ

0

Если кто-то это нужно, я решил его со следующими строками кода.

  Storyboard = UIStoryboard.FromName ("MainStoryboard", null); 

      initialViewController = Storyboard.InstantiateInitialViewController() as UITabBarController; 
      // If you have defined a root view controller, set it here: 

      IADViewController iAdVc = new IADViewController (initialViewController); 

      Window.RootViewController = iAdVc; 


      // make the window visible 
      Window.MakeKeyAndVisible(); 
Смежные вопросы