UINavigationController, UITabBarController, Views
(1 korsinik/a gleda/ju temu) (1) Gost

UINavigationController, UITabBarController, Views


08.02.2010 | 14:57
Vec sam postao po nekim stranim forumima ali ameri pavaju pa cu ovdje i na mackorisniku probat mozda se nadje kakva dobra duša...

Znači šta pokušavam napraviti je jedan tab bar koji upravlja Viewovima u različitim divovima. Neki od tih tabova imaju svoj navigation kontroler, neki ne...
IB fileovi i veze među njima su na slikama da ne duljim previše, a i neka netko pametniji od mene pregleda jesam li sve dobro povezao...






Znači to sve funkcionira, tab bar upravlja i izmjenjuje pogleda, i pogledi se normalno iscrtavaju, uitableview na prvom pogledu, dohvaća tablesource i crta svoje ćelije, sve fercera nevjerojatno... Table data source je plist file sa slike 5... za sada je plist file a kasnije dolazi baza podataka sa istom strukturom...
Kako se vidi iz strukture plist file-a ideja je da u rootu pokazem firstviewcontroller i napunim tablicu iz root data sourcea. Prilikom klika na pojedini red, vadim svu "djecu" iz tog reda i koristim ih kao datasource za isti view controler... Ovako koristim isti pogled rekurzivno i samo ih pusham jedan na drugi sve do trena kad vise nemam "djece". to bi znacilo da sam dosao do kraja (nema podkategorija znaci riječ je o proizvodu) i da prikažem singleview iliti ga opis pojedinog proizvoda.

U ideji ovo sve štima, i u praksi djelomično radi...
Znači događa se sljedeće:
Dobijem root view, sa ispisanim svim root podatcima, svaki od njih klikom daje odgovarajući novi pogled (pusha na navigationcontroler) bilo da ima ili nema djece (znaci u ovoj fazi navigationcontroler dobro radi posao i distinkciju ima ili nema djece), ali kad probam u tom drugom pogledu pogledati "djecu" (pushati navigationcontroller još jednom) ništa se ne događa... U konzoli vidim da on radi uredno distinkciju između ima i nema djece (znači da se datasource tablice uredno učitao) ali ništa se ne događa...

evo firstviewcontroller na pregled....
#import "FirstViewController.h"
#import "SingleViewController.h"
#import "CrotuneDemoAppDelegate.h"
#import "CellView.h"


@implementation FirstViewController

@synthesize tableDataSource,CurrentTitle,CurrentLevel,navigationController,reklama,mreklama,stringMreklama,stringReklama;



// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
	//
	
	if (CurrentLevel==0) {
		//start datasource
		NSArray *tempArray = [[NSArray alloc] init];
		self.tableDataSource=tempArray;
		[tempArray release];
		
		CrotuneDemoAppDelegate *AppDelegate = (CrotuneDemoAppDelegate *)[[UIApplication sharedApplication] delegate];
		self.tableDataSource = [AppDelegate.data objectForKey:@"Rows"];
		
		self.navigationItem.title = @"Categories";
		
		[mreklama setImage:[UIImage imageNamed:@"mkras.jpg"]];
		[reklama setImage:[UIImage imageNamed:@"kras.jpg"]];
		
	}
	else{
		
		self.navigationItem.title = CurrentTitle;
		[mreklama setImage:[UIImage imageNamed:stringMreklama]];
		[reklama setImage:[UIImage imageNamed:stringReklama]];
		
	}
	[UIView beginAnimations:nil context:NULL];
	[UIView setAnimationDelay:1];
	[UIView setAnimationDuration:1];
	[reklama setAlpha:0];
	[UIView commitAnimations];
		//NSLog(@"%@",tableDataSource);

}


	//table delegate metods

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
	
	return [self.tableDataSource count];

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	
	static NSString *CellIdentifier = @"CellView";

	
	CellView *cell = (CellView *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
	if (cell == nil){
		
		NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CellView" owner:nil options:nil];
		
		
		for(id currentObject in topLevelObjects)
		{
			if([currentObject isKindOfClass:[CellView class]])
			{
				cell = (CellView *)currentObject;
				break;
			}
		}
		
	}
		// Set up the cell...
	NSDictionary *dictionary =[self.tableDataSource objectAtIndex:indexPath.row];
	
	[[cell title] setText:[dictionary objectForKey:@"Title"]];
	[[cell background] setImage:[UIImage imageNamed:[dictionary objectForKey:@"Image"]]];
	
	return cell;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
	
	
		//Get the dictionary of the selected data source.
	NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row];
	
		//Get the children of the present item.
	NSArray *Children = [dictionary objectForKey:@"Children"];
	
	if([Children count] == 0) {
		SingleViewController *detailView =[[SingleViewController alloc] initWithNibName:@"SingleView" bundle:[NSBundle mainBundle]];
		
			//ovdje dodaj objekt sa podatcima od pojedinog subjekta
		[self.navigationController pushViewController:detailView animated:YES];
		[detailView release];
	
	}
	else {
		
			//Prepare to tableview.
	
		FirstViewController *nextView = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:[NSBundle mainBundle]];
		
			//Increment the Current View
		nextView.CurrentLevel += 1;
		
			//Set the title;
		nextView.CurrentTitle = [dictionary objectForKey:@"Title"];
		
		nextView.stringMreklama=[dictionary objectForKey:@"SAdd"];
		nextView.stringReklama=[dictionary objectForKey:@"LAdd"];
		
		nextView.tableDataSource = Children;
		
			//Push the new table view on the stack
		[self.navigationController pushViewController:nextView animated:YES];
		
		
		[nextView release];
		
		[tableView deselectRowAtIndexPath:indexPath animated:YES];
	}
}


- (void)didReceiveMemoryWarning {
	// Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
	
	// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
	// Release any retained subviews of the main view.
	// e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}

@end


molim pomoć.. glava boli više...
08.02.2010 | 22:27
Malo si to premaštovito opisao, na žalost ne i dovoljno jasno.

Dakle, vrlo vjerojatno te nisam razumio, ali tek da pokušam po osjećaju, možda nam se potrefi...

Kako stavri stoje, lako je moguće da uzrok tvog problema nema nikakve veze sa tabavima i spominješ ih tek toliko da nas dodatno zbuniš.



OK, dalje mi se čini da ti imaš jedan ViewController koji bi trebao hendlati svaki TableView u tvojem progamu iako to zaprvo nije zamišljeno na taj način u samom SDK i u svim primjerima koje sam vidio, ali ajde zašto ne, sve su to ionako samo pointeri.

Iz jedne tabele u drugu prelaziš sa onim -pushViewController:animated: pretpostavljam? Pošto ta metoda ne gura View već ViewController možda je u tom caka? Neka ivar tog kontrollera sam mora biti postavljena tako da tvoja -viewDidLoad zna koje podatke mora učitati, ali pošto je to sad skroz nova instanca conroller to naravno neće ići tako već bi najpametnije bilo koristiti klasičnu C globalnu varijablu, ali deklariranu kao static unutar .m fajla za kontroler pa će to biti globalna varijabla za sve kontrolere.

OK, jesam li barem blizu?

Igor
08.02.2010 | 22:54
Tabovi vjerojatno nemaju nikakve veze, koliko ja kontam, ali spominjem ih cisto da se zna odakle sam poceo, i da potvrdim svoje sumnje kako on nema veze sa mojim problemom.. upravo si potvrdio :-D

Konfuzno mi je cili dan, jer sam na mrtvoj tocki od sinoc i ne mrdam, i ti si prvi koji mi je odgovorio nakon postanja na 6 foruma... Tako da se ispricavam za konfuziju koju sam izazvao...

Svaki table view ima svoj kontroler nije upitno, neznam kako si vidio da nema. Iako nije tako zamisljeno,niti je ovdje slucaj, vec jednom sam tako radio i sve je ferceralo bez problema, ako tablice imaju istu strukturu a drugaciji data source... no to ovdje nije slucaj...

Znam da se pushaju view controlleri,toliko sam do sad naucio.. viewDidLoad prvi put vadi podatke iz Data.plist fajla, svaki sljedeci datasource mu je postavljen objekt tabledatasource - koji je prethodni pogled na stogu postavio iz svoje djece...
nextView.tableDataSource = Children;


Datasource se uredno instancira svaki put, provjereno sa nslog u metodi viewDidLoad..

Jedino sto meni pada na pamet je to da se navigationcontroller kreira kad se pokrene aplikacija iz mainviewa uredno i fino, a kad pusham novi viewcontroller on izgubi vezu sa postojecim navigationcontrollerom i nezna gdje ce pushati novi pogled...

Zadnji potez ocajnika - Jeli moguce da mi radi problem to sto je navationcontroller u jednom nibu, tableview u drugom???

Zbunjen totalno...
08.02.2010 | 23:07
E i moglo se primjetiti do sada kad govorim o pogledu, govorim o viewcontrolleru... :-D
08.02.2010 | 23:40
ok, rjesio problem...
samo u sljedeci view(controller) koji cu pushat kopirao postojeci navigationcontroller iz parent pogled(controller)a...
:-D

Hvala na pomoci ipak... :-D
Moderatori: Bertone
  • Stranica:
  • 1

Vikalica™

Zadnja poruka: pred 6 sati, 8 minuta
  • mbp2009: ne vidim neke konkretne info na netu za to
  • mbp2009: Ne znam odakle ove diskusije poticu, ali da vidim, ima li koga na dev beti ios? Pogotovo ovaj dio me zanima za PBZ i poslovnu PBZ, ako radi
  • dpasaric: Čekam da mi dođe jedan zanimljiv komad hardvera, pa ću finalizirati velik pregled monitora koji će mnogima biti koristan!
  • dpasaric: "Your request has been processed"
  • Ender: takodje i ja molim admina da obrise i moj korisnicki nalog. ostavljam mogucnost da se kasnije opet prijavim kad i ako se neke stvari promene. pozzz i svako dobro.
  • dpasaric: @Air U redu, razumio sam. Hvala ti na svemu onom pozitivnom, ono drugo će srediti vrijeme.
  • jura22: Vrijeđaj partizane i Tita pa da vidiš.
  • Air: Ako si razumio onda napravi to, a ne da moram pisali litanije za jednostavan zahtjev.
  • dpasaric: Air, naravno da je dovoljno, ako to želiš mogu i ja odmah, ali hej, jutro je pametnije od večeri, prespavaj, pa javi, najmanji je problem kliknuti na delete.
  • Air: Zanimljiv vam je latinski. Uživajte. Između vaših upisa napišite što je potrebno da zatvorim račun na Jabučnjaku ako nije očigledno dovoljno razumljivo ovo što sam napisao na vikalici.
  • smayoo: Canis mater studiorum. Stara studentska. :D
  • dpasaric: @Gjuroo: Per aspera ad astra!
  • Gjuroo: @Air: Illegitimi non carborundum.
  • dpasaric: Chill out i vidjet ćeš kako će ovo sada biti ugodnije, korisnije i pozitivnije mjesto za sve korisnike.
  • dpasaric: Joj ne drami.
  • Air: Molim odgovornu osobu da obriše Air račun.
  • Air: U ovim novim okolnostima transparentnog licemjerstva pojedinca podvlačim crtu. Ja nemam želudac za trpiti to da mi jedan licemjer briše čiste postove samo zato što on ima problem u svojoj glavi. Kako je tino1 rekao bilo mi je zadovoljstvo dolaziti na Jabučnjak radi ljudi. Ovim putem pozdravljam sve dobre ljude Jabučnjaka i HVALA vam! Nakon ovog upisa brišem svoj račun.
  • dpasaric: Sve što je sada obrisano u "kafanskim laprdanjima" je bilo u dogovoru s Djurom, počistili samo za sobom i tko hoće može tamo dalje s "lakim temama".
  • drlovric: @Rusty: Slazem se 100%. Svako bira za sebe. Jedna tema u sekciji Razno, nije smetala nikome ko je dosao da konzumira nesto drugo. Ako sam dosao u ducan da kupim povrce, zasto bi mi smetalo sto prodaju i hranu za bebe? :)
  • rusty: Evo kao dugogodišnji član foruma, moram priznati da niti jednom nisam otvorio političke teme niti sudjelovao u njima na forumu. Dolazim vidjeti non političke, non automobili teme. I jedna i druga su mi kao nogomet, besmislene i ne interesantne. Da li će mi faliti, ne. Da li ću manje dolaziti na forum, ne.
  • dpasaric: To je tvoje viđenje.
  • dpasaric: Obećajem da ćemo je izreklamirati na forumu, pa tko voli…
  • Air: Znam tvoje ovlasti. Nije u tome problem. Problem je što se Jabučnjak predstavlja kao pozitivan, a ovo što ti radiš je negativno!
  • dpasaric: Evo, pokreni i ti moderiraj Signal grupu za vaše političke rasprave.
  • dpasaric: I probaj biti koristan. Pokreni nešto pametno i svima korisno.
  • dpasaric: Pročitaj kućni red još jednom.
  • Air: @dpasaric Otvorio si javni komunikacijski kanal. Tko si ti da brišeš postove iste tematike o kojoj sam pišeš, ako ti postovi nisu uvredljivi i ne krše nikakav zakon?
  • dpasaric: Poanta je da je besmisleno dalje širiti raspravu.
  • Air: Fakat imaš teških osobnih problema
  • Air: Protiv "cara" se ne smije ništa pisati?
  • Air: Smetati osobno?
  • Air: i zašto si obrisao ovaj moj tekst is te teme?
  • Air: u temi kafanska laprdanja
  • Air: @dpasaric Samostalno, ničim izazvan optužio si Djuru za nešto. Djuro ti je odgovorio. Budi čovjek, pa kada si "zagrizao" odgovori čovjeku na njegovu cijelu obranu. - stavku po stavku.
  • Air: Skrećeš TEMUsa svojih LOŠIH djela na svoja DOBRA djela (koja nitko ne spori).;)
  • dpasaric: Propast su lijenost i jalovo lamentiranje. Tko je vrijedan i radi neće propasti.
  • dpasaric: Jabučnjak je do svoje punoljetnosti davao odličnu pomoć svakome tko je došao i bez vaših političkih prepucavanja.
  • dpasaric: Vaša hipoteze su potpuno promašene! :) Ono kao "super je imati stalno aktivnu crnu kroniku jer će onda puno ljudi to čitati, pa će ti koji to čitaju pomagati drugima." Bez brige, tko treba pomoć dobit će je i bez crne kronike.
  • Air: Represija i samovolja su isključivo put u propast
  • drlovric: Represija i samovolja nikada nije rjesenje.
  • drlovric: Plenkovic je porucivao Hrvatima kome nije dobro neka ide u DE. Bis bald. A danas drzava daje pare povratnicima jer kapital su ljudi. Ako nas KGB sve rastjera odavdje, ovaj forum ce sam sebi biti svrha :)
  • Air: Mislim da je uvreda za članove jabučnjaka koji su aktivni u političkim temama na jabučnjaku uspoređivati ih sa ekipom koja “troši” takve teme na drugim portalima. Iako smo svakodnevno na forumu neke od tih politički tema nemaju upisa po nekoliko dana. To znači da ekipa nije “ovisna” o tome da non-stop nešto serucka nego se upisuje kad netko nešto ima.
  • Air: Na osnovu ovoga dolazimo da je vrijednost ovog foruma u ljudima koji su svakodnevno aktivni na forumu, a to je uz pomoći ovih političkih tema.
  • Air: Druga vrijednost je već navedena, a to je što je forum sa takvim temama bio aktivan, i ljudi su tada bili prisutni pa su češće otvarali tehničke teme i više pomagali. Danas, a pogotovo u skoroj budućnosti više neće biti potreba za ovakvim tehničkim forumima jer će ljudi pomoću AI-a brže i učinkovitije naći rješenja svog problema.
  • Air: Nije poanta tih tema da netko “ispadne” upravu, niti da se netko uvjeri u neku od teorija koje smo ovdje secirali. Poanta je da su mnogi članovi na osnovu smayoo-ovog angažmana korigirali svoje izražavanje i prepucavanje. Ja sam prvi među njima.
  • Air: Prva vrijednost naših politički tema je: kažu “željezo se kuje dok je vruće” po tom principu ja vidim velike promjene na mnogim članovima koji su aktivni u tim temama. Neće se netko naučiti komunicirati i promišljati o svojoj dosadašnjoj negativnoj komunikaciji kada nema “vatre” i aktivnog korektiva (u našem slučaju smayoo-ta).
  • Air: dok sam došao doma teme je već zaključana pa ću ovdje dodati… tino1 je većinu toga lijepo napisao. Dodati ću da mislim da ove “političke” teme nisu bile uzalud.
  • Bertone: Smanji veličinu slika i trebalo bi proći ili sačekaj da se javi Riba ili Davor, oni znaju kak je podešen forum i što prolazi, a što ne.
  • Yonkis: Htio sam odgovoriti na temu izgubljenih slušalica sa screenshotovima iz mobitela pa je bilo nekih 5-6 slika i nije prolazilo.
  • Bertone: Na poslu koristimo phpBB i u admin postavkama je postavljeno da je max veličina slike 2560 × 1440 pix ili 3 Mb i ako korisnik pokuša napraviti upload veće slike dobije takvu obavjest o grešci,... isto je tak orecimo i sa slikom avatara, propisali smo maksimum od 512x512 pix i ako je veća nema uploada. Gdje ti dobivaš grašku?

Za vikanje moraš biti prijavljen.

Prijava

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Anketa

Koji Mac koristite?

Page Speed 0.46 Seconds

Provided by iJoomla SEO