When you push a UIViewController into navigation stack, there is a default "back" button with the title of previous view. Sometimes the title is too long or text is not quite right. Then you need to define your own.
Fortunately it's easy. The problem is where to do it.
Showing posts with label UIViewController. Show all posts
Showing posts with label UIViewController. Show all posts
Saturday, March 26, 2011
How to Define Custom backBarButtonItem
Labels:
backBarButtonItem,
leftBarButtonItem,
navigationController,
navigationItem,
pushViewController,
UIBarButtonItem,
UIViewController,
viewDidLoad
Friday, March 4, 2011
How to Center Image when Rotating UIWebView
What happens, when you rotate iPhone while your application shows embedded webpage with custom background graphics? Hopefully the application rotates, too, and hopefully the background image has been designed well (*).
Here is an example how to top center backgroung image while rotating. Please note that the image has been poorly designed ON PURPOSE. Can't make a point with well designed graphics :)
Here is an example how to top center backgroung image while rotating. Please note that the image has been poorly designed ON PURPOSE. Can't make a point with well designed graphics :)
Labels:
html,
loadRequest,
NSBundle,
NSURL,
NSURLRequest,
shouldAutorotateToInterfaceOrientation,
UIViewController,
UIWebView,
viewDidLoad,
webKit
Tuesday, October 5, 2010
How to Disable UITabBarItems but Only Temporarily
User is allowed to use only one UITabBar item, until he has done something e.g. made a selection on list. Other tabs are available after that. Access to tabs can be blocked again e.g. if user chooses to delete current "entry".
Tab access control is done in AppDelegate, since it owns UITabBarController and UITabBarItems. Just set up delegate handling - and that's the key: either there is a delegate to block tabs or there is none for free access:
Btw this works only as long as you don't need UITabBarControllerDelegate for any other purpose. You have been warned.
Tab access control is done in AppDelegate, since it owns UITabBarController and UITabBarItems. Just set up delegate handling - and that's the key: either there is a delegate to block tabs or there is none for free access:
@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>Access control can be enabled in any other class/file:
{
UITabBarController *tabBarController;
}
...
- (BOOL)tabBarController:(UITabBarController *)aTabBarController
shouldSelectViewController:(UIViewController *)viewController
{
if (
([aTabBarController.viewControllers objectAtIndex:1] == viewController) ||
([aTabBarController.viewControllers objectAtIndex:2] == viewController)
)
{
// Disable switch to tab 1 and 2
// Check: otherViewController to enable
// Check: SomeViewObject to disable
return NO;
}
else
{
// Tab ok at index 0
return YES;
}
}
- (void)blockTabAccessAccess control can be disabled in any other class/file:
{
MyAppDelegate *app = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
app.tabBarController.delegate = app;
[app SwitchToTab:kTabFirst];
}
- (void)releaseTabAccessSome consider it poor design to access AppDelegate directly from "anywhere" and further more to use it to control application state. My defense are the classic a) it's easy b) it's fast c) it works and d) sometimes central control place is a good thing.
{
MyAppDelegate *app = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
app.tabBarController.delegate = nil;
[app SwitchToTab:kTabSecond];
}
Btw this works only as long as you don't need UITabBarControllerDelegate for any other purpose. You have been warned.
Labels:
delegate,
iphone,
UITabBar,
UITabBarController,
UITabBarControllerDelegate,
UITabBarItem,
UIViewController
Tuesday, September 21, 2010
How to Hide UITabBar
Sometimes you need to show a single stand-alone UIView without letting user change tabs. For example there is a list, where you provide an info view using a disclosure accessory button. The question is then: how to hide UITabBar:
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPathPretty simple, when you find the right location to add right line(s) of code.
{
InfoViewController *info = [[InfoViewController alloc] init];
info.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:info animated:YES];
[info release];
}
<Error>: CGImageCreateWithImageProvider: invalid image size: 0 x 0
There seems to be a bug in iOS 4.0 built-in MapKit, which causes error message in both simulator and real device:
Warning disappears and I'm back on Zero Warning policy!
<Error>: CGImageCreateWithImageProvider: invalid image size: 0 x 0.This happens when I open UIViewController, which contains MKMapView (all created with Interface Builder). Since user location is not needed at this moment, I just unchecked "Shows User Location" checkbox on Map View Attributes.
Warning disappears and I'm back on Zero Warning policy!
Labels:
interface builder,
iOS4,
map,
MKMapViewDelegate,
UIViewController
Thursday, May 20, 2010
How to reload current UIViewController
Sometimes you might need to reopen currently open UIViewController. There might be a UITableView, but doing just [self.myTable reloadData] might not be enough. Try this:
Of course this will work only, if those methods contain operations you need to do while closing and opening your view.[self viewWillDisappear:NO]; [self viewWillAppear:NO];
Monday, May 3, 2010
How to Create Delayed Tab Change
Not sure, if it's a good idea, but this is how you create "smooth" tab view changes:
Be careful, style is not an easy thing to achieve!
User will notice something happened as expected and your app will look either stylish or slow, depending on your graphics, UI design and overall implementation.#pragma mark - TabBar controller delegate - (void)tabBarController:(UITabBarController*)tbc didSelectViewController:(UIViewController*)newSelection { [UIView beginAnimations:@"myTabFade" context:nil]; [UIView setAnimationDuration:0.5]; for (UIViewController* vc in tbc.viewControllers) vc.view.alpha = (vc==newSelection) ? 1 : 0; [UIView commitAnimations]; }
Be careful, style is not an easy thing to achieve!
Labels:
alpha,
animation,
delegate,
iphone,
UITabBarController,
UIView,
UIViewController
Subscribe to:
Posts (Atom)