ako netko može pomoć! htio bi stavit običan tekst u toolbar i probao sam ovako:
UILabel label=[[UILabel alloc]init];
label.text=@"datum";
UIBarButtonItem *datum=[[UIBarButtonItem alloc]initWithCustomView:(UIView)label];
UIBarButtonItem *infoButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:nil action:nil];
[toolbar setItems:[NSArray arrayWithObjects:infoButton,datum,nil]];
[self.navigationController.view addSubview:toolbar];
[[self tableView] reloadData];
refreshbutton se pojavljuje,UILabel mi se ne pojavljuje! ima li netko možda ideju u cemu je problem ili možda prijedlog da napravim drukčije?
dakle, htio bi da mi toolbar bude sličan kao u aplikaciji mail...
Imas 2 greske na koje te je kompajler vjerojatno upozorio. Fali ti * kod inicijalizacije labela i kod castanja istog tog labela pri dodavanju u custom UIBarButtonItem.
Kad to dvoje rijesis, kompajlirat ce se bez greske, ali label se jos uvijek nece vidjet jer nema definiran frame, tako da je njegov frame (0, 0, 0, 0). Imas dva rjesenja. Prvo je da umjesto init labela stavis initWithFrame i definiras mu fiksnu velicinu, a drugo da nakon sto mu postavis tekst pozoves sizeToFit (naravno, ako ce se tekst mijenjat, to moras svaki put napravit). I to je to, onda samo moras customizirat label tako da maknes pozadinsku boju, dodas mu neku sjenu i sredis velicinu il sta vec oces dobit...
UILabel *label = [[UILabel alloc] init];
label.text = @"datum";
[label sizeToFit];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
label.shadowColor = [UIColor darkGrayColor];
label.shadowOffset = CGSizeMake(0, -1);
UIBarButtonItem *datum = [[UIBarButtonItem alloc] initWithCustomView:(UIView *)label];
UIBarButtonItem *infoButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
target:nil
action:nil];
[toolbar setItems:[NSArray arrayWithObjects:infoButton, datum, nil]];
[self.navigationController.view addSubview:toolbar];
[[self tableView] reloadData];
probat ću ovo izmjenit..iako mi kompajler nije javljao nikakvu grešku..probat ću pa javim
Zapravo ako zelis dobit izgled toolbara kao u Mail appu, onda bi mozda bilo jednostavnije izracunat koliko najvise sirine trebas za taj label i postavit mu frame na pocetku i stavit label.textAlignment = UITextAlignmentCenter, pa dodat iteme u toolbar ovim redom:
[toolbar setItems:[NSArray arrayWithObjects:reloadButton, razmak, datum, razmak, newButton, nil]];
...gdje je newButton naravno UIBarButtonSystemItemCompose, a razmak UIBarButtonSystemItemFlexibleSpace.
sad je dobro! :=)
bsevo said: iako mi kompajler nije javljao nikakvu grešku
Nemoguce, ako je to taj kod koji si pastao. Al nebitno. Napravi to sto sam ti napisao i radit ce tocno ko u Mail appu :)
ma krivo sam paste-o..bila je * u kodu al bitno da je sad ok
da ne radim novi topic..pa da odma tu pitam...kak da napravim da mi se tableview automatski resize-a između navigationbar-a i toolbar-a?
dal da se poigram s frame, bounds ili nešto drugo..
napisat ću što detaljnije..
imam jednu klasu koja nasljeđuje uitableviewcontroller i zove se tabla!
u appdelegate stavim
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
UINavigationController *navController=[[UINavigationController alloc]init];
tabla *tablica=[[tabla alloc]initWithStyle:UITableViewStyleGrouped];
tablica.title=@"SmBuS";
navController.navigationBar.barStyle=UIBarStyleBlack;
[navController pushViewController:tablica animated:NO];
[window addSubview:navController.view];
[self.window makeKeyAndVisible];
return YES; }
a kod implementacije klase tabla imam:
- (void)viewDidLoad {
[super viewDidLoad];
toolbar = [[UIToolbar alloc] init]; toolbar.barStyle = UIBarStyleBlack;
[toolbar sizeToFit];
CGFloat toolbarHeight = [toolbar frame].size.height;
CGRect rootViewBounds = self.parentViewController.view.bounds;
CGFloat rootViewHeight = CGRectGetHeight(rootViewBounds);
CGFloat rootViewWidth = CGRectGetWidth(rootViewBounds);
CGRect rectArea = CGRectMake(0, rootViewHeight - toolbarHeight, rootViewWidth, toolbarHeight);
[toolbar setFrame:rectArea];
CGRect frame;frame.origin=[toolbar frame].origin;
frame.size.height=[toolbar frame].size.height;
frame.size.width=[toolbar frame].size.width-60;
UILabel *label = [[UILabel alloc] initWithFrame:frame];
label.text = @"last update 1.1.2011.";
label.textAlignment=UITextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
label.shadowColor = [UIColor darkGrayColor];
label.shadowOffset = CGSizeMake(0, -1);
UIBarButtonItem *datum = [[UIBarButtonItem alloc] initWithCustomView:(UIView *)label];
UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:nil action:nil];
UIBarButtonItem *infoButton = [[UIBarButtonItem alloc] initWithCustomView:[UIButton buttonWithType:UIButtonTypeInfoLight]];
UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[toolbar setItems:[NSArray arrayWithObjects:refreshButton,spaceButton,datum,spaceButton,infoButton,nil]];
[self.navigationController.view addSubview:toolbar];
[[self tableView] reloadData];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
i problem mi je u tome što kad scrollam table skroz do dole ostane mi jedna cell iza toolbara! kak da resize-am tableview točno između toolbara i navigationbara?
Ajme sto ti je ovaj kod nepotrebno zakompliciran...
Imas ekran koji je fiksne visine, navigationbar koji je fiksne visine i toolbar koji je fiksne visine. Jedino sto bi se moglo promijenit je status bar. Dakle:
CGRect statusFrame = [[UIApplication sharedApplication] statusBarFrame];
tablica.frame = CGRectMake(0, 0, 320, 392 - statusFrame.height);
tablica.autoresizingMask = UIViewAutoresizingFlexibleHeight;
Edit: ovaj code tag u novoj verziji foruma je katastrofa -.-
fakat je code tak malo zmrdan :)
Fakat, koristite rade pastebin i neki syntax highlighting koji vam odgovara, ovo je stvarno glupo.
jedino mi ovo uspjeva:
UIView *footer = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 45)] autorelease];
footer.backgroundColor = [UIColor clearColor];
self.tableView.tableFooterView = footer;
to će bit dok ne nađem drugo rješenje...baš sam gledo i na stanford predavanjima i lik veli da bi navigationcontroller trebao ovaj tableview(tj. cijeli viewcontroller koji je top na stacku) resize-at između toolbara i navigationbara
dost toga sam maknuo i sada je ok! :)