Iphone SDK - adding UITableView to UIView

Posted by Shashi on Stack Overflow See other posts from Stack Overflow or by Shashi
Published on 2010-05-06T23:16:06Z Indexed on 2010/05/06 23:18 UTC
Read the original article Hit count: 1387

Hi,

I am trying to learn how to use different views, for this sample test app, i have a login page, upon successful logon, the user is redirected to a table view and then upon selection of an item in the table view, the user is directed to a third page showing details of the item.

the first page works just fine, but the problem occurs when i go to the second page, the table shown doesn't have title and i cannot add title or toolbar or anything other than the content of the tables themselves. and when i click on the item, needless to say nothing happens. no errors as well.

i am fairly new to programming and have always worked on Java but never on C(although i have some basic knowledge of C) and Objective C is new to me.

Here is the code.

import

@interface NavigationTestAppDelegate : NSObject {

  UIWindow *window;
UIViewController *viewController;
IBOutlet UITextField *username;
IBOutlet UITextField *password;
IBOutlet UILabel *loginError;
//UINavigationController *navigationController;

}

@property (nonatomic, retain) IBOutlet UIViewController *viewController;

@property (nonatomic, retain) IBOutlet UIWindow *window;

@property (nonatomic, retain) IBOutlet UITextField *username;

@property (nonatomic, retain) IBOutlet UITextField *password;

@property (nonatomic, retain) IBOutlet UILabel *loginError;

-(IBAction) login;

-(IBAction) hideKeyboard: (id) sender;

@end

import "NavigationTestAppDelegate.h"

import "RootViewController.h"

@implementation NavigationTestAppDelegate

@synthesize window;

@synthesize viewController;

@synthesize username;

@synthesize password;

@synthesize loginError;

pragma mark -

pragma mark Application lifecycle

-(IBAction) hideKeyboard: (id) sender{

[sender resignFirstResponder];

}

  • (BOOL)application:(UIApplication *)application >didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after app launch
    //RootViewController *rootViewController = [[RootViewController alloc] init]; //[window addSubview:[navigationController view]];

    [window addSubview:[viewController view]];

    [window makeKeyAndVisible];

    return YES;

}

-(IBAction) login {

RootViewController *rootViewController = [[RootViewController alloc] init];

//NSString *user = [[NSString alloc] username.

if([username.text isEqualToString:@"test"]&&[password.text isEqualToString:@"test"]){

  [window addSubview:[rootViewController view]];

  //[window addSubview:[navigationController view]];

  [window makeKeyAndVisible];
  //rootViewController.awakeFromNib;

}

else {

    loginError.text = @"LOGIN ERROR";
    [window addSubview:[viewController view]];
    [window makeKeyAndVisible];

}

}

  • (void)applicationWillTerminate:(UIApplication *)application { // Save data if appropriate }

pragma mark -

pragma mark Memory management

  • (void)dealloc {

    //[navigationController release];

    [viewController release];

    [window release];

    [super dealloc];

}

@end

import

@interface RootViewController : UITableViewController {

IBOutlet NSMutableArray *views;

}

@property (nonatomic, retain) IBOutlet NSMutableArray * views;

@end

// // RootViewController.m // NavigationTest // // Created by guest on 4/23/10. // Copyright MyCompanyName 2010. All rights reserved. //

import "RootViewController.h"

import "OpportunityOne.h"

@implementation RootViewController @synthesize views; //@synthesize navigationViewController;

pragma mark -

pragma mark View lifecycle

  • (void)viewDidLoad {

    views = [ [NSMutableArray alloc] init];

    OpportunityOne *opportunityOneController;

    for (int i=1; i<=20; i++) { opportunityOneController = [[OpportunityOne alloc] init]; opportunityOneController.title = [[NSString alloc] initWithFormat:@"Opportunity %i",i];

    [views addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                      [[NSString alloc] initWithFormat:@"Opportunity %i",i], @ "title",
                      opportunityOneController, @"controller",
                      nil]];
    self.title=@"GPS";
    

    }

    /*UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init]; temporaryBarButtonItem.title = @"Back"; self.navigationItem.backBarButtonItem = temporaryBarButtonItem; [temporaryBarButtonItem release]; */ //self.title =@"Global Platform for Sales"; [super viewDidLoad];

    //[temporaryBarButtonItem release]; //[opportunityOneController release];

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem; }

pragma mark -

pragma mark Table view data source

// Customize the number of sections in the table view. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; }

// Customize the number of rows in the table view. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [views count]; }

// Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

// Configure the cell.

cell.textLabel.text = [[views objectAtIndex:indexPath.row] objectForKey:@"title"];

return cell;

}

pragma mark -

pragma mark Table view delegate

  • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    //UIViewController *targetViewController = [[views objectAtIndex:indexPath.row] objectForKey:@"controller"];

    UIViewController *targetViewController = [[views objectAtIndex:indexPath.row] objectForKey:@"controller"];

    [[self navigationController] pushViewController:targetViewController animated:YES];

}

pragma mark -

pragma mark Memory management

  • (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning];

    // Relinquish ownership any cached data, images, etc that aren't in use. }

  • (void)viewDidUnload { // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. // For example: self.myOutlet = nil; }

  • (void)dealloc { [views release]; [super dealloc]; }

@end

Wow, i was finding it real hard to post the code. i apologize for the bad formatting, but i just couldn't get past the formatting rules for this text editor.

Thanks, Shashi

© Stack Overflow or respective owner

Related posts about iphone

Related posts about SDK