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 sat, 13 minuta
  • Bertone: Gdje? Ja vidim samo stari nedostupni M2 za 799
  • stefanjos: 799
  • stefanjos: a evo ih
  • stefanjos: dobro sto ovaj istyle ceka sa ponudom...
  • Zdravac: na Apple Mađarska su cijene kao u DE, a može se odabrati HR tipkovnica
  • m@xym: Naravno, sve to ne vrijedi za naše tržište jer kod nas vrijede neka druga pravila.... Kod nas je Air sa 8 GB 200 € skuplji of Air-a sa 16 GB u Njemačkoj.
  • m@xym: Zašto bi inače Apple davao "besplatan" i tihi upgrade za baš sve strojeve iz game (Studio čak počinje sa 32 GB RAM-a i M2 MAX procesorom!!!)
  • m@xym: S obzirom da nitko ne daje nešto što ne mora, postavlja se pitanje kako će novi strojevi raditi sa 16 GB RAM-a i uključenim AI dijelom OS-a.... Možda su 32 GB upravo postala ono što je bilo 16 GB na starim strojevima...
  • Yonkis: Mora biti 16GB da bi korisnici imali UX za AI, sve manje od toga ne zadovoljava. Sami su si "jamu" iskopali, baš mi ih je žao :)
  • m@xym: Još samo da shvate da umjesto 256 GB trebaju staviti 1 TB SSD... za istu cijenu... :o)
  • m@xym: Ne samo Air-ovi, nego i svi ostali... Očito je Apple AI veliki potrošač memorije.
  • Piko: Ne znam da li je itko uočio ... Ali svi Airovi dolaze po defaultu sa 16 GB RAM-a .... a cijena ista kao i prije za 8 :)
  • dpasaric: Evo i MacBook Pro M4...
  • mbp2009: nece ni biti jos
  • stefanjos: na istyleeu i dalje nema cijena....
  • dpasaric: Eto osvrt na Mac mini M4 na naslovnici...
  • kupus: Evo, otvorit ću temu pa da ne pisemo ovdje
  • kupus: Hvala Bertone
  • Bertone: *ništ
  • Bertone: @kupus, pa nije to nišz novo oko audio izlaza s prednje strane, HDMI će otpeljati zvuk u monitor, a večina današnjih monitora ima audio out priključak.
  • stefanjos: mea culpa
  • stefanjos: kupus, sada kuzim sto si mislio. mislio sam na ovu ogavnu naslovnicu koju su stavili ovi lol
  • imar: Imam osjećaj da će se ovaj novi Mac Mini prodavati ko' vruće kifle.. :D
  • dpasaric: Top model Mac minija = 4.700 € hahahahahah
  • dpasaric: [link]
  • dpasaric: Evo novi Mini je vani!
  • MoschuS: DE Store ima cijene 699, 929, 1159 i 1649 za Pro
  • MoschuS: Bas i ja gledam taj 3.5mm jack i pitam se zasto je naprijed!?
  • kupus: Minusi : ista cijena storage upgradea, headphone jack s prednje strane? Kako misle spojiti zvucnike na to?
  • kupus: Plusevi : 3 monitora, gigabit ethernet kao standard, ista početna cijena, 16gb ram
  • kupus: Legit je :) Jonny Ive je već dugo na aparatima, navodno i na lifesupportu otkad je vidio novi iMac :)
  • MoschuS: Evo i Minija ;)
  • kupus: Nije ni studio baš proprcionalan, ako ćemo tako
  • kupus: Vidi ove screenshotove, ne njihov render. Meni izgleda poprilično legit, a to i potvrđuje činjenica da su navedene screenshote i maknuli s weba
  • stefanjos: stvarno mislis da ce tako bez proporcionalno sranje izaci iz applea? doslovno se vidi da je fake
  • kupus: mini leakan, bar s prednje strane [link]
  • Piko: ma što se mene tiće ne mora imati slova gore .... ali mi treba svjetlo da nađem pepeljaru i upaljač :)
  • Yonkis: @piko očekuje se da je tipkanje na slijepo defaultno za usera.
  • Piko: magična tipkovnica još uvijek nema pozadinsko svjetlo .... ;-(
  • dpasaric: Evo novi iMac M4. Ništa zanimljivo nema, samo novi procesor i više memorije u osnovnoj konfiguraciji.
  • drlovric: Isto kao nedostatak hrvatskih titlova na Apple TV. A pokrili bi trziste 4-5 drzava sa tom malom modifikacijom slovenskih. Al ne moraju, pa sto bi :)
  • miomika: ma gle...ako mogu kotolirati sve te feture putem DNS-a po svakoj državi, zašto to onda uopće daju u EU. I zašto nema nigdje JASNO napisano. "Call record ne radi u cijeloj EU", točno se sojeća ono.....osveta za USB-C. ma Idiotizam na najjače..a tek one pizdarije da Aple One nije dostupan u .hr, ali je u Sloveniji....ma...sve više i više mi se sve to jako gadi
  • drlovric: Zao mi je samo ljudi koji su potrcali da kupe nove mobitele radi inteligencije. To ije bio bas inteligentan potez :D
  • drlovric: Sveje to jos uvijek poluproizvod, i zvanicno u Beta fazi. Imam osjecaj da ce se to taman popeglati dok dodje na EU trziste. Tako da, ne bih se ja tu nist aisjecao zakinutim ni nervirao :)
  • miomika: u banani....ko da smo u zimbabwe--u...mislim, ovo nadjebavanje EU-USA, preregulirana EU, oni stave update, koji niti jedan od fetaure-a ne radi. Da bi radilo, trebalo bi jailbreakat uređaj. Koja je poruka poslana ovime?
  • Zdravac: Do travnja 2025. ce proraditi i u EU
  • miomika: ja sam sad na drugom telefonu stavio svoj stari US AppleID i proradio je Call record i na čekanju sam s AI. pokušat ću s glupim trikom, ali mi je stvar preglupa.......
  • drlovric: Nakon pola sata aktivirali su mi AI. Siri animacija je prekrasna i moram priznati da je malo manje tupava. Neke stvari su iznenadjujuce dobre (za Siri). Ali nije to jos Google Assistant razina.
  • miomika: RU=EU :)
  • miomika: Ne radi niti RSC, niti previev summarize..MA NIŠTA!!!

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

1v@n, Ender, m@xym, MacSlavko, pontmax1, Riba, robee, tino1, Anonimci (659)

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Komentari

Anketa

Koji Mac koristite?

Page Speed 0.83 Seconds

Provided by iJoomla SEO