2016-10-28 4 views
0

Я добавляю виджет расширения «Сегодня» в мое приложение iOS, которое я сделал с Xamarin. Я выполняю это пошаговое руководство:iOS Widget Extension initial UIViewController

https://developer.xamarin.com/guides/ios/platform_features/introduction_to_extensions/

Виджет появляется в моем разделе уведомления в тренажере, но я не могу получить любое содержимое, чтобы появиться в нем. Он даже не создаст класс UIViewController, который я создал, и установить его как начальный контроллер (я знаю, потому что он никогда не ударяет мою точку останова в конструкторе). Я поставил его в качестве основного класса с этим ключом, как описано в руководстве:

enter image description here

Любая идея, почему? Я также получаю это сообщение, когда я сначала запустить приложение после добавления расширения:

appname may slow down your phone the developer of this app needs to update it to improve its compatibility

Я сделал образец проект, с Xamarin, и виджет появляется в этом проекте при развертывании на тренажере, просто не с содержанием, что я пытаюсь добавить в классе CodeViewController:

https://drive.google.com/file/d/0B8xKHTqtwfKtY0xZN0xaejhlZmM/view?usp=sharing

+0

Если вы разделяете код вашего проекта образца может быть быстрее, чтобы воссоздать эту проблему и попытаться помочь вам –

+0

Хорошая идея. Я добавил небольшой образец проекта. – Darius

+0

Это все еще не работает, но до сих пор я нашел 2 вещи. 1. Я не знаю, как вы создали проект расширения, но он не является exe, поскольку он предположительно является библиотекой. Это не верно. Я должен уметь видеть вкладку расширений iOS в свойствах проекта, а я нет. 2. Контейнер приложений должен включать ссылку на расширение, которое не происходит в вашем решении. Я продолжу копать и дам вам знать, если найду что-нибудь еще. Пожалуйста, дайте мне знать, если вы решите его раньше. –

ответ

0

чтобы сэкономить 2 дня я провел на нем вот решение.

  1. Не запускайте его на тренажере. Это не работает (по крайней мере, на моем).
  2. Не пытайтесь ударить точку останова в VS. Когда вы тестируете расширение, ваше приложение находится в фоновом режиме. VS не даст вам остановиться в отладчике. Чтобы подтвердить запуск любого из ваших приложений, нажмите «Домой» и попытайтесь установить точку останова в VS. VS будет висеть, пока вы не принесете приложение на передний план.
  3. Не использовать View.Frame в DidLoad. Размер рамки составляет весь размер экрана, поэтому, когда вы помещаете свою метку в центр, вы ее не увидите. Используйте WillAppear как этот

    public override void ViewWillAppear(bool animated) 
    { 
        base.ViewWillAppear(animated); 
    
        if (TodayMessage == null) 
        { 
         // Add label to view 
         TodayMessage = new UILabel(new CGRect(0, 0, View.Frame.Width, View.Frame.Height)) 
         { 
          TextAlignment = UITextAlignment.Center, 
          BackgroundColor = UIColor.LightGray, 
          TextColor = UIColor.Black 
         }; 
    
         // Calculate the values 
         var dayOfYear = DateTime.Now.DayOfYear; 
         var leapYearExtra = DateTime.IsLeapYear(DateTime.Now.Year) ? 1 : 0; 
         var daysRemaining = 365 + leapYearExtra - dayOfYear; 
    
         // Display the message 
         if (daysRemaining == 1) 
         { 
          TodayMessage.Text = String.Format("Today is day {0}. There is one day remaining in the year.", dayOfYear); 
         } 
         else 
         { 
          TodayMessage.Text = String.Format("Today is day {0}. There are {1} days remaining in the year.", dayOfYear, daysRemaining); 
         } 
    
         View.AddSubview(TodayMessage); 
        } 
    } 
    

enter image description here

Смежные вопросы