Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

UtilityAplication - błąd - pare wskazówek na początek


  • Zaloguj się, aby dodać odpowiedź
23 odpowiedzi w tym temacie

#1 jach

jach
  • 13 postów

Napisano 06 sierpnia 2010 - 12:24

To mój pierwszy post na tym forum - więc witam serdecznie!

Życie tak się potoczyło :) że zabieram się za temat pisania aplikacji na iPhone'a. Na chwilę obecną jestem po szybkim wdrożeniu w ojective C i paru tutorialach czyli totalny newbie - natomiast z pomysłem na aplikacje. Generalnie chciałbym aby główny szkielet wyglądał tak że mamy mainView na nim parę ikonek, kliknięcie na dowolnej ikonce powoduje pokazanie nowego widoku na którym coś się będzie działo (Pokazanie RSS, Dane z webserwisu itp) .

Zacząłem sobie testować rodzaje apllikacji i wybrałem Utility Aplication ponieważ na dzień dobry posiada bajeranckie przechodzenie pomiędzy widokami :). W pierwszym etapie chciałem dodać kolejny button a kliknięcie w niego ma spowodować pokazanie kolejnego widoku z np strzała powrotu (analogicznie do tego co już jest) czyli:

1.Dodałem do MainViewController.h definiecje nowej metody
- (IBAction)showNews:(id)sender;
2.Skopiowałem całą zawartość metody showInfo (wygenerowanej przez Xcode)
3.Dodałem do MainView.xib przycisk i pod TouchUpInside ustawiłem nową metode ShowNews
4.Działa - oba przyciski pokazują ten sam widok (FlipsideView.xib)

I teraz zaczęły się (dla mnie) schody ponieważ chciałbym aby kliknięcie na buttonie2 otwierało inny widok a więc:

1.Dodałem sobie do Resources pliczek NewsView.xib
2 W metodzie showNews jedyne skojarzenie z widokiem jakie znalazlem to "nitWithNibName:@"FlipsideView" a więc zmieniłem na:
- (IBAction)showNews:(id)sender {    
	
	FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"NewsView" bundle:nil];
	controller.delegate = self;
	
	controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
	[self presentModalViewController:controller animated:YES];
	
	[controller release];
}

Kompiluje się ale oczywiście nie działa w związku z tym moje pytania:
1.Co zrobiłem źle ?
2.Czy jeden kontroler (FlipsideViewController) może odpalać dowolny plik .xib ?, czy może trzeba dodać nowy kontroler ?
3. Z jakimi zagadnieniami powinienem się zapoznać / na co zwrócić uwagę ?

Z góry dziękuje za wszelkie odpowiedź

#2 tomekh7

tomekh7
  • 73 postów

Napisano 06 sierpnia 2010 - 13:54

Prawdopodobnie nie ustawiłeś w aplikacji Interface Builder parametru File Owner dla NewsView.xib. Powinien on być ustawiony na FlipsideViewCotroller. Najlepiej zrób sobie nowy UIViewController dla widoku NewsView. Generalnie polecam dokument Your First iPhone Application, gdzie poznasz podstawy korzystania z widoków i kontrolerów. Pozdrawiam Tomek

#3 dusker

dusker
  • 383 postów
  • SkądAmsterdam

Napisano 06 sierpnia 2010 - 14:41

To co robisz jest zupełnie bez sensu. Najpierw naucz się podstaw a dopiero potem zabieraj się za pisanie produkcyjnych aplikacji. Co do wyboru utility application template jako bazy pod Twój projekt, to też masakra - wszystko co jest w tym templacie jesteś w stanie napisać sam po przerobieniu sensownej książki i dokumentacji. pt

#4 jach

jach
  • 13 postów

Napisano 06 sierpnia 2010 - 17:49

Prawdopodobnie nie ustawiłeś w aplikacji Interface Builder parametru File Owner dla NewsView.xib. Powinien on być ustawiony na FlipsideViewCotroller. Najlepiej zrób sobie nowy UIViewController dla widoku NewsView.


Dzięki - właśnie o to chodziło. rookie mistake :)
@dusker - chyba właśnie po to są takie templaty żeby z nich korzystać. Jakieś doświadczenie w programowaniu już mam dlatego wziąłem się od razu za gotowe tematy, z pokorą nowicjusza pozdrawiam ;)

#5 wojtkow

wojtkow


  • 6 767 postów
  • Płeć:
  • SkądPoznań

Napisano 06 sierpnia 2010 - 20:16

Notabene robiąc aplikacje mającą parę widoków na Flipside ryzykujesz odrzucenie programu. To jest sposób prezentacji widoków przeznaczony do aplikacji typu utility i widoków preferencji. Radzę Ci zacząć od normalnej aplikacji opartej o template "Navigation-based Application", będzie prościej i normalniej czyli z większym zyskiem dla Ciebie.

#6 jach

jach
  • 13 postów

Napisano 06 sierpnia 2010 - 21:02

Notabene robiąc aplikacje mającą parę widoków na Flipside ryzykujesz odrzucenie programu. To jest sposób prezentacji widoków przeznaczony do aplikacji typu utility i widoków preferencji.....

Co znaczy odrzucenie programu ? Czy chodzi o weryfikacje napisanego softu w AppStorze ?
Akurat od poniedziałku idę na urlop ale po powrocie znowu przysiadam do tematu - w międzyczasie porobiłem sobie jakieś tutki oparte o UITableView
Jak rozumiem prawidłowo / lepiej np by było zrobić coś takiego [URL="http://theappleblog.com/2009/04/15/iphone-dev-sessions-create-a-navigation-based-application/"]Tutek[/URL] pozostawiając nawigacje a zamiast tabelki zrobić buttony / ikonki ?

Dzięki wszystkim za konstruktywne uwagi!

#7 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 06 sierpnia 2010 - 21:40

tak, chodzi o odrzucenie programu podczas dodawania go do App Store. Chodzi o to, że Flipside jest używany w aplikacjach z 2 widokami - jednym głównym aplikacji i drugim ustawień. Niczym Widgety w Dashboardzie. Takie jest jego przeznaczenie, do czegoś takiego użytkownicy są przyzwyczajeni, tak ma być ogólnie. To czy użyjesz buttona, ikonki czy tabeli nie jest tutaj specjalnie istotne. A nawigacja - tak, jak masz pozagnieżdżane widoki - to nawigację robisz w taki sposób w jaki jest zrobiona w tym tutku od ogółu -> do szczegółu. (jak np. w mailu) chociaż do tej twojej aplikacji to chyba logiczniejszym wyborem byłby chyba tab bar (jeżeli te 'moduły' mają być 'oddzielnie' od siebie)

#8 macieks72

macieks72

  • 9 873 postów

Napisano 06 sierpnia 2010 - 22:40

O to mi się podoba, że Apple pod takim kątem też sprawdza aplikacje w app store. Przynajmniej interfejs jest w jednolity. Nie wiedziałem że tak jest, ale podoba mi sie to. Apple ma tutaj plus u mnie ;)

#9 jach

jach
  • 13 postów

Napisano 26 sierpnia 2010 - 13:30

Jak pisałem po urlopie wgryzam się w temat dalej i pisanie w applowym SDK podoba mi się coraz bardziej :)
Opanowałem w moim mniemaniu ;) tematy controllerów / nawigacji i biorę się za kolejne rzeczy. Chciałbym teraz aby jeden z sub-elementów mojej aplikacji wyświetlał w tabelce RSS'y i jeśli jest połączony z siecią zaciągał sobie / synchronizował zawartość xmla'a (czyli trzymał sobie zapisaną treść). Zakładam że muszę:

1.Wciągnąć i wyświetlić XML'a ze zdalnego źródła (np znalazłem taki [URL="http://dblog.com.au/general/iphone-sdk-tutorial-building-an-advanced-rss-reader-using-touchxml-part-1/"]tut[/URL])
2.Zapisać sobie go aby wyświetlać coś w trybie offline (używając Core Data -> [URL="http://developer.apple.com/iphone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Articles/03_ManagedObject.html"]tut[/URL])
3.Przy synchronizacji (online) sprawdzać np sumę kontrolną z XML czy coś się zmieniło i czy warto zapisywać nowy plik - tutaj jakieś podpowiedzi co do metod / narzędzi ?

Czy moje założenia są słuszne ? ewentualnie jaka inną drogę / narzędzia byście obrali
Jak zwykle będę wdzięczny za wszystkie wskazówki

#10 macieks72

macieks72

  • 9 873 postów

Napisano 26 sierpnia 2010 - 13:41

ad.3 - to bym sobie podarował, to sprawdzanie sum kontrolnych, bo i tak musisz sciagnac ten rss-owy xml i tak, to po prostu go zapisz zeby był dostepny offline i tyle, bez sprawdzania sum. Miało by to sens jakby na serwerze siedziała suma kontrolna, to wtedy byś sobie sumy porównał i wiedział czy pobierać czy nie, a tak jeśli i tak musisz go pobrać to bez sensu z tymi sumami.

#11 jach

jach
  • 13 postów

Napisano 26 sierpnia 2010 - 13:50

Uwaga słuszna - ale mam dostęp do samego rss'a i mogę sobie tam np wystawić nowy XML z md5 z zawartości pliku. Z tego co się orientuje w większości sieci płacimy za pakiety danych więc (oczywiście jeśli nie łączymy się przez Wi-Fi) oszczędności będzie chyba sporo jeśli za każdym razem nie trzeba będzie pobierać całego XML'a ?

#12 macieks72

macieks72

  • 9 873 postów

Napisano 26 sierpnia 2010 - 14:12

ale mam dostęp do samego rss'a i mogę sobie tam np wystawić nowy XML z md5 z zawartości pliku.

No chyba że tak, to wtedy ma to sens.

#13 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 26 sierpnia 2010 - 15:42

no to jak masz dostęp to nie wygodniej wstawić tam po prostu datę ostatniej aktualizacji rssa? wtedy porównać czy data nowsza niż kiedy był ściągany ostatni raz i tyle.

#14 jach

jach
  • 13 postów

Napisano 27 sierpnia 2010 - 06:41

No tak - ale czy będę mógł pobrać zdalnie tylko porcje XML'a (ta z datą) tak aby nie wciągać całości ? bo wtedy i tak wychodzi na to samo....

#15 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 27 sierpnia 2010 - 07:48

A to i tak nie ma jakiejś funkcji w stylu filemtime która zwraca datę ostatniej modyfikacji pliku? (to info przecież i tak w nim siedzi)

#16 jach

jach
  • 13 postów

Napisano 27 sierpnia 2010 - 07:58

Jeśli RSS będzie generowany z automatu co np 15 to filemtime zdaje się będzie zmieniał a zawartość niekoniecznie. W każdym razie biorę się do roboty na razie wg tutków czyli XML i Core Data - ewentualne pytania kwestie pozwolę sobie zamieścić w tym wątku ;)

#17 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 27 sierpnia 2010 - 08:29

Po co generować rss'a co 15 minut? Ale rozumiem, chodzi ci głownie o to, żeby jakieś dane były aktualne i na serwerze i na urządzeniu dociagane kiedy trzeba (z cyklu np kursy walut) ale rss to tutaj raczej zły przyklad

#18 jach

jach
  • 13 postów

Napisano 02 września 2010 - 10:35

Witam ponownie - moja aplikacja powolutku się rozwija, czytnik RSS gotowy (zdecydowałem się jednak na użycie .plis do cachowania XML, core data przyda się do czego innego) w związku z tym kolejne pytanie: Mam tabelkę (UITableView) w której wyświetlam rss'y (w uproszczeniu jeden cell - jeden title). Źródeł mam 3 a więc każde nowe źródło oddzielam nagłówkiem sekcji z tytułem źródła RSS'a - i teraz muszę osiągnąć taki efekt: 1.Odpala się widok, widzę tabelkę tylko z trzeba nagłówkami sekcji (wiersze ukryte) 2.Klikając na nagłówku sekcji rozwijam (pokazują się) wszystkie wiersze tabeli z titlami RSS'a 3.Klikając ponownie chowam wiersze I teraz jak: - podpiąć akcje do nagłówka sekcji, w której metodzie (titleForHeaderInSection) ? - ukryć/pokazać wiersze ? - jakich ewentualnych komponentów użyć ? Bardzo proszę o wskazanie jakiegoś kierunku / ewentualnie linka

#19 jach

jach
  • 13 postów

Napisano 08 września 2010 - 14:01

Tabelka pozostanie jednak z jedną sekcją ;) Różne źródła będą w różnych widokach (tzn tym samym zparametryzowanym). Mam nastepujące pytanie - zauważyłem że pierwsze pobranie obrazków (aby wyświetlić jako nagłówki newsów w tabelce) nieco trwa. Czy da radę do tabelki wstawić webView z z html np


Pytam ponieważ tak wyświetlam sobie treść RSS'a z uwagi na już dołączone formatowanie

#20 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 10 września 2010 - 04:05

ale po co ten webview? oczywiście - da się zrobić customową komórkę tabeli i możesz tam wsadzić co tylko chcesz. ale nie wiem po co to tak komplikować? IMO z webview'ami to będzie to jeszcze wolniejsze niż teraz. od tego są wątki (NSThread) żeby to sobie działało w tle i wtedy, kiedy jest potrzebne.

#21 jach

jach
  • 13 postów

Napisano 10 września 2010 - 14:28

Dzięki za wskazanie kierunku! - rzeczywiście działa bez porównania lepiej / szybciej

#22 jach

jach
  • 13 postów

Napisano 29 września 2010 - 11:43

Witam ponownie - chciałem wreszcie przetestować moją aplikacje na fizycznym iphonie (mam wykupione konto w ADP), próbuje od rana i nic :(, co zrobiłem (Xcode 3.23, iPhone ver 4.1): 1.Dołączyłem sobie urządzenie w iOS Provisioning Portal / Devices - posiada jeden profil (Team Provisioning Profile), ktory jest wybrany na urządzeniu, kluczę pobrane i zainstalowane na macu również na macu 2.W organizerze Xcode w zakładce Iphone Development w profilach developer/provisioning mam uwzgledniony Team Proviosioning Profile (mimo to przy iPhonie nie świecie się zielona "lampka") 3.Kombinowałem z podpisaniem kodu przy target/buildings Niestety przy próbie kompilacji (Active SDK - Device) dostaję zawsze komunikat - No provisioned iPhone OS devide is connected (iTunes włączony , zsynchronizowany) How To z dokumentacji Appla nie pomaga - Czy ktoś może pomóc ?

#23 wojtkow

wojtkow


  • 6 767 postów
  • Płeć:
  • SkądPoznań

Napisano 29 września 2010 - 13:47

Po prostu XCode 3.2.3 nie wspiera SDK 4.1 więc nie jest w stanie rozpoznać urządzenia korzystającego z tej wersji systemu. Pozostaje Ci upgrade do XCode 3.2.4

#24 jach

jach
  • 13 postów

Napisano 29 września 2010 - 14:07

O kurcze dzięki - ściągam! Zobaczymy czy pomoże...




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych