Pozdrav korisniče,

Za pun pristup forumu odaberi jedno od ova dva dugmeta:

Login with Facebook Sign In with Google Sign In with OpenID Sign In with Twitter

In this Discussion

Ovaj web site se ne trudi biti kompatibilnim sa Internet Explorer web preglednikom. Sve se u njemu vidi, ali za puni dojam preporučamo neki pošteni web preglednik poput Safarija, Firefoxa ili Google Chromea.

Top Posters

Članovi (6489)

  • judgedredd
  • pax0707
  • C R O W
  • patrikp
  • matijavz
  • hrca10
  • Ivan
  • JagicNikola
  • Jonny018
  • Nothing
  • PUCKODJ
  • sara
  • theoblak
  • kakarinac
  • zac189
  • imaticx
  • vukohr
  • 000000000
  • Munja01
  • cyb

Tko je online (3)

Uključeno je povezivanje korisničkih računa na glavnom sajtu i forumu. Ukoliko vidite ovu poruku i ne možete se logirati na forum potrebno je za pristup koristiti podatke s kojima ste se registrirali na glavni site. Ukoliko se još niste registrirali na glavnom sajtu potrebno se ponovo registrirati, a sustav će vas pri prvom logiranju prijaviti na vaš forumski account. Probleme i dojmove možete napisati ovdje ili poslati mail na mac.korisnik@mackorisnik.com
Korištenje navigation bara bez tablica
  • Pozdrav,
    evo ovo su moje muke. Treba mi u app-u da prva dva view-a budu obični UIViewController-i, a tek treći tablica (naravno, govorimo o hijerarhiji unutar navigation oriented app-a).
    Sad, prvi view ima jedan jedini botun koji mora vodit na sljedeći view. Ja san pokuša implementirat jednostavnu metodu koja bi izvršila naredbu
    [self.navigationController pushViewController:SecondScreenController animated:YES];
    ali to ne radi. Kako su primjeri koje iman svi sa tablicama, neznan kako najjednostavnije da pozoven kompletno novi view, ali da zadrži navigation bar i da ima opciju back?

    Pomooć!
    Post edited by Unknown User at 2010-06-12 12:45:54
  • 19 Komentara sorted by
  • Evo uspia san, dvi jednostavne linije koda triba ubacit:
    if(secondController == nil)
    secondController= [[SecondScreenController alloc] initWithNibName:@"SecondScreenController" bundle:nil];
    znači, ako ne postoji onda ga stvara iz nib file-a
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Naravno, uvijek moras napravit instancu onog sto koristis, inace radis s nilom, a Objective-C je specifican sto kod rada s nilom metode i vracaju nil :)

    Do sad si radio s IB-om pa ti je uglavnom instanciranje UI elemenata on sam radio, al drago mi je da si se snasao :) Kak napreduje projekt?
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Pa mogu ti reć da san zadnjih sat dva napravia dosta posla. Sad moran smislit kako ću zapisivat i pretraživat podatke. Krenilo je konačno malo bolje, rok mi je 18., a iman još poslužitelj napravit koji mora pretražit bazu, utrpat podatke u xml i poslat url na taj xml. Ima posla:-D
    Post edited by Unknown User at 1999-11-30 00:00:00
  • "Clark Kent" said:
    ...utrpat podatke u xml i poslat url na taj xml.

    Ma neee, samo nek ti odma vraca xml na upit i onda imas...
    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://path.do/file.xml"]];

    ...koji ti se automatski vrti u vlastitom threadu i ne blokira pozadinski thread i ima odlican error handling.

    A za lokalni storage mozes koristit te xml-ove ako nemas vremena za implementirat Core Data.
    Post edited by Unknown User at 1999-11-30 00:00:00
  • E, thx, baš mi je triba parser.
    Za početak će bit spremljeno samo u jedan xml file, vjerojatno neće postojat ni cache dok sve ne sredin.
    Nego, sad iman novi problem. Iman jedan nazovimo "obrazac" sa 3 textFielda i jednin segmentedControl-on. I sad triban izvuć vrijednosti da bi moga prema njima radit pretragu. Na dnu je botun koji kad kliknen pokreće metodu search. Sad san unutar search-a pokuša testirat jesu li vrijednosti dobre, ali nikako dobit pravu vrijednost iz segmentedControl-a. Ovo su "sporne" linije koda:
    if(starsSegmented.selectedSegmentIndex==0)
    stars = @"All";
    else stars = [NSString stringWithFormat:@"%d",starsSegmented.selectedSegmentIndex];

    na vrhu ima definirano
    NSString *stars = nil;

    vjerojatno san neku glupost napravia :mrgreen:
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Hm, ne da mi se sad isprobavat, al mislim da bi taj kod trebao radit. Kakav bude rezultat? Stavi ovo prije tog if-a:
    NSLog(@"Trenutno je odabran %d. segment", starsSegmented.selectedSegmentIndex);

    Pa pogledaj sta ti ispise u debuger console.
    Post edited by Unknown User at 1999-11-30 00:00:00
  • OK, to mi prolazi, ali ovo je kod šta ide nakon toga:
    if(starsSegmented.selectedSegmentIndex==0)
    stars = @"All";
    else stars = [NSString stringWithFormat:@"%d",i];

    msg=[[NSString alloc] initWithFormat:@"I'm going to %@, more expensive then %@€ and cheaper then %@€ in hotel with at least %@ stars!", dest, least, most, stars];

    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Search Criteria" message:msg delegate:self cancelButtonTitle:@"That's it!" otherButtonTitles:nil];

    [alert show];
    [alert release];
    ...


    a ovo je šta konzola izbacuje:
    2010-06-04 10:26:02.789 ZavrsniNav[4687:207] Trenutno je odabran 2. segment
    Current language: auto; currently objective-c
    (gdb) continue
    (gdb) continue
    Program received signal: “EXC_BAD_ACCESS”.
    (gdb)
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Jesu least i most NSNumber ili neki C tip (int, float...)? Ako su NSNumber onda mora radit, negdje drugdje si zeznuo. A ako su int ili float, onda u formatu za msg zamijeni njihove %@ s %d odnosno %f. Moras pocet koristit breakpointove i NSLog :)
    Post edited by Unknown User at 1999-11-30 00:00:00
  • sve su NSString-ovi, ovo je samo za probu pa nisan pretvara u int. To nije problem. Još jedna stvar, ovaj alert mi se normalno pojavi ako ne minjan ovaj segmentedControl. Znači sa dest, least i most mogu radit šta oću i prikaže mi njihove vrijednosti.
    Kad smo već kod toga, je li ovo dobar način za pribacit iz stringa u int?
    int a=[string intValue]
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Inače, koristin breakpointse i NSLog, ali ode mi apsolutno ne pomažu. Ubacia san NSLog za vrijednost stars i sve je ok, unutra je zapisana vrijednost koja triba bit. Sad je jedino moguće da ovaj alert ne valja. Ali neznan šta tu ima ne valjat. Znaš li možda šta bi ovo bilo:
    Program received signal:  “EXC_BAD_ACCESS”.


    EDIT:
    Sad san napravia NSLog za msg i sve je normalno zapisano. Sad san tek zbunjen...
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Nemam ideje, posalji mi na mail projekt ak oces da pogledam.
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Posla san ti, neznan jesi dobia?
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Dobio sam, samo nisam stigo pogledat, al sjetio sam se u meduvremenu sta je problem.
    msg=[[NSString alloc] initWithFormat:@"I'm going to %@, more expensive then %@€ and cheaper then %@€ in hotel with at least %@ stars!", dest, least, most, stars];

    Ovo msg=[[NSString alloc] initWithFormat:@"..."]; zamijeni s msg = [NSString stringWithFormat:@"..."]; i onda gore negdje stavi msg = [NSString alloc] init]; u dio koda koji se nece ponavljat. Alociro si stalno istu varijablu, u tome je problem. Prvi put prode ok, a onda dobijes EXC_BAD_ACCESS jer pokusas alocirat vec alociranu varijablu.
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Evo pokušavan, ali ne svaćan šta triba bit di. koji je to dio koda koji se ne ponavlja? ode se sve izvrši svaki put kad se klikne na button.triba li onda i dalje bit NSString *msg = nil; ? Radia san neki primjer iz jedne knjige i on je ima ovako napisanu tu metodu i prolazi:
    -(void)actionSheet:(UIActionSheet *)actionSheet 
    didDismissWithButtonIndex:(NSInteger)buttonIndex{
    if (!buttonIndex == [actionSheet cancelButtonIndex])
    {
    NSString *msg = nil;
    if (nameField.text.length > 0)
    msg=[[NSString alloc] initWithFormat:
    @"You can breathe easy, %@, everything went OK.", nameField.text];
    else
    msg=@"You can breathe easy, %@, everything went OK.";

    UIAlertView *alert = [[UIAlertView alloc]
    initWithTitle:@"Something was done"
    message:msg
    delegate:self
    cancelButtonTitle:@"Phew!"
    otherButtonTitles:nil];
    [alert show];
    [alert release];
    [msg release];
    }
    }


    Ja san radia po iston principu i meni neće. Zašto?
    (U stvari za daljnji razvoj programa ovo i nije bitno ali me sad zanima u čemu je problem i dok to ne riješi ne mogu dalje :D )
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Pa vidis da on ima na kraju [msg release], ti nemas. Mozes i to stavit tako da ti dealocira tu varijablu msg pa ju mozes pri sljedecem pozivanju metode sa sigurnoscu opet alocirat. Ta metoda se ocito ponavlja ako se pozove svaki put kad tapnes gumb. Pod dio koda koji se ne pojavlja sam mislio nesto u stilu loadView, viewDidLoad ili u app delegateu u glavnoj metodi applicationDidFinishLaunching:withOptions: il kako se vec zove...
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Ali stvar je u tome da ja napravin release svaki put a opet nešto nevalja. Evo kod:
    -(void)search:(id)sender{
    NSString *msg = nil;
    NSString *dest = nil;
    NSString *stars = nil;
    NSString *least = @"ZERO";
    NSString *most = @"INFINITE";
    int br = 0;
    int i = starsSegmented.selectedSegmentIndex;

    if(destinationField.text.length>0){
    dest=destinationField.text;
    br++;}
    else dest=@"Anywhere";

    if(leastField.text.length>0){
    least=leastField.text;
    br++;}
    else least=@"ZERO";

    if(mostField.text.length>0){
    most=mostField.text;
    br++;}
    else most = @"INFINITE";

    NSLog(@"Trenutno je odabran %d. segment", starsSegmented.selectedSegmentIndex);

    if(starsSegmented.selectedSegmentIndex==0)
    stars = @"All";
    else{ stars = [NSString stringWithFormat:@"%d",i+2];
    br++;}
    NSLog(@"stars=%@", stars);

    if(br>0)
    msg=[[NSString alloc] initWithFormat:@"I'm going to %@, more expensive then %@€ and cheaper then %@€ in hotel with at least %@ stars!",
    dest, least, most, stars];

    else msg=@"I'm going anywhere!";

    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Search Criteria"
    message:msg delegate:self cancelButtonTitle:@"That's it!" otherButtonTitles:nil];

    NSLog(@"destination=%@",dest,
    "least=%@",least,
    "most=%@",most,
    "stars=%@", stars);

    [alert show];
    [alert release];
    [msg release];
    [dest release];
    [least release];
    [most release];
    [stars release];
    }


    Sad san taman napravia xml parser i pošto on svaki put učitava neke slike s neta zanima me kako da te slike spremin negdi u memoriju i da se izbrišu kad se app zatvori? Pretpostavljan da mi treba neki NSDictionary? Ili Array? Pošto je Navigation based app on mi releasa view kad se vraćan nazad, zato svaki put ponovo učitava sliku?
    Još me zanima je li potrebno releasat svaki put kad se nešto alloc? I kad još?

    Šta više znan to više neznan :mrgreen:
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Ufff, daj procitaj osnove osnova na http://cocoadevcentral.com/d/learn_objectivec/ ;)

    U ovom primjeru komotno mozes koristit autoreleasane NSStringove.
    Post edited by Unknown User at 1999-11-30 00:00:00
  • A gledaj, proša san ja neke knjige sa dev stranica, ali san previše toga novoga napravia u par dana pa mi se sve pomutilo:-D.
    Uglavnon, to sad radi sa autoreleasanim stringovima. Sad naravno iman drugi problem:-D

    Pošto mi se XML parsira odma pri otvaranju aplikacije, iman sve podatke već na uređaju spremljene u mutableArray. Sad želin proves search nad tim objektima u nizu i ubacit u novi niz samo one koji zadovoljavaju. To mi se činilo prilično jednostavno ali iz nekog razloga ne radi.
    for(int i=0; i< [appDelegate.hotels count];i++)
    {
    aHotel = [appDelegate.hotels objectAtIndex:i];
    NSLog(@"Info for hotel:%@",aHotel.name);
    if(
    ((aHotel.location==searchDest)
    ||([searchDest isEqualToString:@"Anywhere"]))
    &&([aHotel.price intValue]>=searchLeast)
    &&([aHotel.price intValue]<=searchMost)
    &&(
    ([aHotel.stars intValue]==[searchStars intValue])
    ||([searchStars isEqualToString:@"All"])))
    {
    [containsSearch addObject:aHotel];
    NSLog (@"Dodan je hotel: %@",aHotel.name);
    NSLog (@"%d",[containsSearch count]);
    }
    }


    ovo je dio koda koji provjerava podatke. i stvar je u tome šta mi svaki put ovaj prvi NSLog ispiše ime hotela ka da je dodan (znači zadovoljava uvjete), ali ovaj drugi mi konstantno ispisuje nulu. Znači da nema elemenata u MutableArray-u...
    Znaš li možda ficho do čega može bit jer san već neko vrime zapea na ovome.
    E, ovaj hotels je isto NSMutableArray
    Post edited by Unknown User at 1999-11-30 00:00:00
  • Ajde ljudi pliz pomoć ako neko zna, baca me u očaj ovaj search;
    Post edited by Unknown User at 1999-11-30 00:00:00