iphone ios uitableview uitoolbar

iphone - ¿Cómo agregar una UIToolbar a UITableViewController programmatically?



ios (3)

He optado por usar un UITableViewController sin una punta. Necesito una UIToolbar en la parte inferior con dos botones. ¿Cuál es la forma más simple de hacer eso?

PD: Sé que puedo usar fácilmente un UIViewController y agregar una UITableView pero quiero que las cosas se vean consistentes en toda la aplicación.

¿Alguien puede ayudar?

Vi el siguiente ejemplo y no estoy seguro de su validez:

(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //Initialize the toolbar toolbar = [[UIToolbar alloc] init]; toolbar.barStyle = UIBarStyleDefault; //Set the toolbar to fit the width of the app. [toolbar sizeToFit]; //Caclulate the height of the toolbar CGFloat toolbarHeight = [toolbar frame].size.height; //Get the bounds of the parent view CGRect rootViewBounds = self.parentViewController.view.bounds; //Get the height of the parent view. CGFloat rootViewHeight = CGRectGetHeight(rootViewBounds); //Get the width of the parent view, CGFloat rootViewWidth = CGRectGetWidth(rootViewBounds); //Create a rectangle for the toolbar CGRect rectArea = CGRectMake(0, rootViewHeight - toolbarHeight, rootViewWidth, toolbarHeight); //Reposition and resize the receiver [toolbar setFrame:rectArea]; //Create a button UIBarButtonItem *infoButton = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:self action:@selector(info_clicked:)]; [toolbar setItems:[NSArray arrayWithObjects:infoButton,nil]]; //Add the toolbar as a subview to the navigation controller. [self.navigationController.view addSubview:toolbar]; [[self tableView] reloadData]; } (void) info_clicked:(id)sender { [self.navigationController popViewControllerAnimated:YES]; [toolbar removeFromSuperview]; }


Aquí hay un ejemplo simple, que puede ayudar

UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; UIBarButtonItem *trashItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(deleteMessages)]; UIBarButtonItem *composeItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:self action:@selector(composeMail)]; NSArray *toolbarItems = [NSMutableArray arrayWithObjects:spaceItem, trashItem,spaceItem,composeItem,nil]; self.navigationController.toolbarHidden = NO; [self setToolbarItems:toolbarItems];

Gracias, prodeveloper


Lo más simple es construir su proyecto sobre un UINavigationController . Ya tiene una barra de herramientas, simplemente está oculta por defecto. Puede revelarlo al alternar la propiedad toolbarHidden , y su controlador de vista de tabla podrá usarlo siempre que esté en la jerarquía del controlador de navegación.

En el delegado de su aplicación, o en el objeto que el delegado de su aplicación pasa el control, cree el controlador de navegación con su UITableViewController como el controlador de la vista raíz:

- ( void )application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)options { MyTableViewController *tableViewController; UINavigationController *navController; tableViewController = [[ MyTableViewController alloc ] initWithStyle: UITableViewStylePlain ]; navController = [[ UINavigationController alloc ] initWithRootViewController: tableViewController ]; [ tableViewController release ]; /* ensure that the toolbar is visible */ navController.toolbarHidden = NO; self.navigationController = navController; [ navController release ]; [ self.window addSubview: self.navigationController.view ]; [ self.window makeKeyAndVisible ]; }

Luego configure los elementos de la barra de herramientas en su objeto MyTableViewController :

- ( void )viewDidLoad { UIBarButtonItem *buttonItem; buttonItem = [[ UIBarButtonItem alloc ] initWithTitle: @"Back" style: UIBarButtonItemStyleBordered target: self action: @selector( goBack: ) ]; self.toolbarItems = [ NSArray arrayWithObject: buttonItem ]; [ buttonItem release ]; /* ... additional setup ... */ }


También puede simplemente marcar la opción "muestra la barra de herramientas" en el inspector de atributos NavigationController.