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 1 dan, 10 sati
  • smayoo: Svetak i praznik, 2u1 :D
  • Gjuroo: Pratim čestitke i podižem za slavlje Tijelova.
  • JOHN: Također
  • cariblanco: Pridružujem se čestitkama :)
  • smayoo: Svim hrvatskim državljanima želim sretan Dan državnosti! :)
  • m@xym: cariblanco, Ovdje se ne radi o pozivu nego o SMS poruci.
  • cariblanco: Ja nemam tih problema, svi koji me trebaju znati me znaju, tako da ništa dodatno ne odgovaram niti otvaram. Normalno kako se krećem po skoro cijelom svijetu i ponekad koristim lokalne sim-kartice, je bilo čudnih poziva od svakud...svi su oni na ignore :)
  • IgorD: O da, meni je to došlo isti dan kad sam očekivao amazon paket, prvo je došao HT sms da je paket spreman za isporuku pa drugi dan i ovo. Naravno da sam kliknuo bez gledanja detalja ali onda me sve zbunilo pa sam pobjegao i googla nisam li već 'ozračen'
  • m@xym: Pa otprilike tako je i u RH. Ali, ono što je interesantno je, da, barem neki primatelji tih poruka, stvarno čekaju isporuku pakete od Hrvatske pošte (koji će, naravno, biti uredno isporučen primatelju), što upućuje na možebitno "curenje" podataka sa nekog. HP-ovog servera.
  • Ender: ma to vec par meseci u SR stizu te poruke, mislim da smo pisali o tome vec ranije.
  • amsterdamxxx: i meni ta prevara stigla juce u Srb na sms..poruka broja iz Indonezije
  • m@xym: čuj imali su dva pokušaja isporuke ali nisu uspjeli zbog nepotpune adrese. Ali zato imaju broj tvog mobitela i traže da odogovriš na poruku sa Y (klasična navlakuša na telefonske "servisese" koji se masno naplaćuju pošiljatelju... Ma diivota.
  • Yonkis: Kakvi pokušaji muljaže. Ali otkud im broj? Ili adresa? [link]
  • Bertone: :D
  • smayoo: X-D
  • zoranowsky: LOL! :)
  • Gjuroo: :D
  • Ender: na eurosongu ima vise golotinje, al pornic ima bolju muziku :-)
  • Ender: koja je razlika izmedju eurosong-a i pornica?
  • Ender: evo sta kruzi po forumima sada.
  • JOHN: ……naravno uz par iznimki
  • JOHN: Markec je pobjednik bez obzira na brojke! Jako dobra promocija njega kao mladog umjetnika, tradicije, kraja i države od kuda dolazi. Za ostalo/e sam bez komentara. Bilo je tu svega i svačega :)
  • Ender: da ne budem pogresno shvacen, da sam rasista ili sta vec, ali jedan od malog broja normalnih nastupa.
  • Ender: cestitke iz srbije za uspeh i nastup!
  • smayoo: Slažem se!
  • Gjuroo: Saka čast malom na energiji koju je prenio na ljude. Napokon malo masovne pozitive.
  • Zdravac: U svakom slučaju, čestitam mu. Što se mene tiče, on je pobjednik!
  • Zdravac: čini mi se da sam sad u dokumentarcu vidio da Marko ima doma iMac (?), pa si mislim možda je član našeg foruma?
  • Gjuroo: Ma win-win. Kak se već veli, Lazanja je osvojio srca ljudi, a Oni nek si organiziraju Euroviziju u Švici. Ima se, može se :)
  • smayoo: Ja mislim da je HRT okolo lobirao da žiriji ne daju Marku previše bodova jer HRT nema kinte za organizirati natjecanje iduće godine :D
  • cariblanco: Da je Marko nosio suknju, bili bi pobjednici ;)
  • Gjuroo: Rim tim tagi dim!
  • Yonkis: Krehacro, pa ne zove se uzalud Pro.
  • Krehacro: Uh gledam sad usporedbu...pro bolji
  • drlovric: Ma samo Pro. Neka ide zivot :)
  • Krehacro: iPad air m2 ili iPad pro m2?
  • zoranowsky: Isto sam uzeo novog svojevremeno
  • zoranowsky: Išao sam ja pogledati health na svom 12.9 ii gen, ali nema health podatka, inače ok radi, nema problema.
  • drlovric: Pa da, uzeo sam ga cim je izasao. Ne znam sta bih ti rekao za bateriju. Nemam nekih problema, pojma nemam ni na koliko je health. Provjerim pa javim.
  • Yonkis: drlovric: a kakva ti je baterija na njemu, ako pretpostavimo da si ga kupio kad je bio "objavljen"?
  • drlovric: Ja imam iPad Pro (2nd gen). Niti najmanji razlog nemam za upgrade. Oni ubacuju najjace cipove, dok je najveci problem iPada u biti software :)
  • MAK: iPad Air plus Pencil Pro
  • smayoo: Svim Splićanima čestitam dan Sv. Duje! :)
  • cariblanco: kako nogomet može biti okrutan, zaslužili ste najmanje bod
  • cariblanco: Riječani, jeste li spremni za derbi, danas bi trebao biti praznik nogometa na Rujevici
  • smayoo: Možda je to popis po abecedi. ;)
  • cariblanco: Danas čitam VL i koja je najsigurnija zemlja u slučaju holokausta...1 Antartika 2 Argentina ;)
  • Yonkis: Evo, prodajem i neke slušalice, one za u uho. iPhone i sluške, 200€. I nije to sve, one more thing...
  • Mislav2222: ima i 2K 27inca dell monitor, u top stanju na prodaju :D
  • Yonkis: prodao bih iPhone 8 Plus, mijenjao mu bateriju prije cca godinu dana, moram provjeriti, pa ako ima zainteresiranih da ne pišem oglasnik.. Zapravo pišem anyway, valjda tamo netko lurka :)

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

MacSlavko, Riba, Smet, Anonimci (510)

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Anketa

Kupujete li profesionalni Mac?

Čekam novi modularni Mac Pro - 48.5%
Novac nije problem, kupujem iMac Pro - 0.7%
Kupujem Valjak, baš je lijep i tih! - 0%
Kupujem polovni Mac Pro tower - 11.8%
Nadogradit ću postojeći Mac Pro tower - 2.9%
Običan iMac 27" mi je dovoljan za posao - 5.9%
Skromnih sam potreba, Mac mini je zakon! - 7.4%
Radim na terenu, mora biti MacBook Pro - 3.7%
Ne diram ništa, stari Mac služi me odlično - 10.3%
Kupujem PC kantu i prelazim na Windowse! - 8.8%

Ukupno glasova: 136
Anketa je završena dana: 08 Svi 2018 - 12:17
Page Speed 1.01 Seconds

Provided by iJoomla SEO