2016-10-28 6 views
0

Xamarin으로 만든 iOS 앱에 "Today"확장 위젯을 추가 할 예정입니다.iOS 위젯 확장 초기 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

내가 자 마린과, 샘플 프로젝트를 만들고, 시뮬레이터에 배포 할 때 위젯은이 프로젝트에 그냥 나타나지 않습니다 나는 CodeViewController 클래스에 추가하기 위해 노력하고있어 내용으로 :

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

+0

같은 WillAppear를 사용하여이 문제를 다시 당신에게 –

+0

좋은 생각을 도우려고하는 것이 더 빠릅니다 수 있습니다. 작은 샘플 프로젝트를 추가했습니다. – Darius

+0

아직 작동하지 않지만 지금까지 내가 찾은 두 가지. 1. 확장 프로젝트를 어떻게 만들 었는지는 모르겠지만, 그것이 라이브러리라고 가정 할 때 exe가 아닙니다. 이것은 잘못된 것입니다. 프로젝트 속성에서 iOS 확장 탭을 볼 수 있어야하며 그렇지 않습니다. 2. App 컨테이너에는 솔루션에서 발생하지 않는 확장에 대한 참조가 포함되어야합니다. 나는 파기를 계속하고 다른 것을 찾으면 알려주지. 이전에 해결하면 알려주세요 –

답변

0

당신에게 내가 여기에 소요되는 솔루션입니다 이일을 저장합니다.

  1. 시뮬레이터에서 실행하지 마십시오. 그것은 작동하지 않습니다 (적어도 내).
  2. VS에서 중단 점을 시도하지 마십시오. 확장 프로그램을 테스트 할 때 앱은 백그라운드 모드에 있습니다. VS는 디버거에서 멈추지 않을 것입니다. 앱을 실행하려면 홈을 누르고 VS에서 중단 점을 설정하십시오. 앱을 포 그라운드로 가져올 때까지 VS가 멈 춥니 다.
  3. DidLoad에서 View.Frame을 사용하지 마십시오. 프레임의 크기에는 전체 화면 크기가 있으므로 레이블을 중앙에 놓으면 볼 수 없습니다. 당신이 당신의 샘플 프로젝트의 코드를 공유하는 경우이

    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

관련 문제