2012-12-05 11 views
5

Buduję aplikację na iPhone'a w Monotouch. Część mojego projektu wykorzystuje zawartość strony lokalnej. Kopiuję wszystkie html, js, css i obrazy używane na stronie w folderze i importuję to do mojego projektu monotouch. Ustawiłem opcję kompilacji dla wszystkich tych plików na Treść.Monotouch uiwebview nie może znaleźć lokalnego html

załadować lokalnej zawartości sieci Web jak poniżej:

this.url = Path.Combine (NSBundle.MainBundle.BundlePath "Content/index.html"); webView.LoadRequest (nowy NSUrlRequest (nowy NSUrl (this.url, false)));

Problemem jest to, kiedy uruchomić projekt, nie mogę znaleźć lokalną witrynę i dostałem komunikat poniżej, kiedy próbuję debug:

zapytaniu URL nie został odnaleziony na tym serwerze.

/Użytkownicy/* ****/Library/Application Support/iPhone Simulator/4,3/Applications/092E0D85-92F4-4F4E-9CD2-3FBBCD797F76/Project.app/Content/index.html

Najśmieszniejsze jest to, kiedy skopiować link do safari, w internecie jest wyświetlany bez problemu

próbowałem oczyścić i odbudować projektu kilka razy, ale nic się nie zmienia.

Czy ktoś może mi w tym pomóc?

Używam OS X Moutain Lion 10.8.2, MonoDevelop 3.0.5, 6.0.6, MonoTouch Xcode 4.5.2

góry dzięki

+0

Czy ** naprawdę ** używa MonoTouch 3.0.2? To ma kilka lat i prawdopodobnie nie znajdziesz już osób, które by tego używały. Obecna (stabilna) wersja to 6.0.6, a ostatnia wersja zgodna z Snow Leopard to 5.4 (używając Xcode 4.2). – poupou

+0

Przepraszamy za błąd podczas pisania.Używam Monotouch MonoDevelop 3.0.5 i 5.x. Aktualizuję cały system, w tym OS X, Xcode i Monotouch do najnowszego. Mam nadzieję, że rozwiąże to problem. – hoangnm284

+0

Zaktualizowałem wszystko do najnowszych, ale nadal jest to problem. Czy ktokolwiek może mieć na ten temat doświadczenie? – hoangnm284

Odpowiedz

2

To dziwne, działa dobrze dla mnie.

Spróbuj to zamiast:

var fileName = "Content/index.html"; 
webView.LoadHtmlString (File.ReadAllText (fileName), 
         NSUrl.FromFilename (fileName)); 
0

Dzięki za pomoc.

Po prostu zdałem sobie sprawę, że umieściłem parametry w łączu, np .: index.html? P1 = v1 & p2 = v2, i powoduje, że link nie działa. Jeśli usunę ten param, będzie to praca bez żadnego problemu.

Przepraszam za tę informację na moje pytanie.

Teraz, jeśli nie mogę zrobić jak normalna strona internetowa, jak mogę przekazać parametry do mojej lokalnej strony internetowej?

+0

, jeśli chcesz dodać dodatkowe informacje do swojego pytania, edytuj je. Dodawanie komentarzy jako odpowiedzi jest mylące. – Jason

+0

Po przekazaniu parametrów na kwerendę zazwyczaj na serwerze jest coś (PHP, ASP.NET, Rails itp.), Które je interpretuje i odpowiada za pomocą HTML. Kiedy używasz lokalnych stron HTML w swojej aplikacji, są one po prostu HTML, nie ma przetwarzania po stronie serwera ma miejsce. – Jason

+0

Używając javascript, nadal możemy analizować parametry dla metody GET. Czytałem gdzieś powiedział, że przy użyciu jQuery możemy uzyskać również parametry dla POST, ale nie przetestowałem go. Problem z MT polega na tym, że traktują parametry jako część nazwy pliku, więc nie mogą go znaleźć. Naprawiłem problem poprzez usunięcie params z nazwy pliku, a następnie za pomocą MT uruchom javascript, aby przekazać moje parametry. Dzięki za wszystkie twoje pomoce. – hoangnm284

0

Pamiętaj, aby ustawić Build Action dla htm na BundleResource - Twój kod z tymi ustawieniami działa dla mnie!

+2

komentarz, który powinien być – MuhammadHani

1

Możesz użyć NSURLComponent, jak pokazano poniżej. Parametry można przekazywać we właściwości NSURLComponent Query.

 string viewerPath = Path.Combine(NSBundle.MainBundle.BundlePath, string.Format("Content/pdfjs/web/{0}", _pdfViewerFileName)); 
     string queryString = string.Format("file={0}", _pdfFilePath); 
     NSUrlComponents components = new NSUrlComponents(viewerPath); 
     components.Query = queryString; 
     Control.LoadRequest(new NSUrlRequest(components.Url)); 
Powiązane problemy