title: SegmentedControl to change TableView data
body: <p>I have a tableview with a segmentedControl in the header, i want the segment control to change the data depending on which segment is clicked, in this case Upcoming/Weekly.</p>
  
  <p>Both data sources come from an XML file on my server, which is the part im having trouble with, as im still new to using NSXMLParser</p>
  
  <p>ive messed around with some code, but to no avail. I know that my segmentAction is being picked up because ive used logs to do so. attached is code and an image of my table, cheers</p>
  
  <p><strong><em>When i click a segmented control, the tableview doesnt update with the new XML source</em></strong> </p>
  
  <p>:)</p>
  
  <p><img src="https://i.stack.imgur.com/1m2jv.png" alt="enter image description here"></p>
  
  <p><strong>RootViewController.h</strong></p>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  
  @class XMLAppDelegate, BookDetailViewController;
  
  @interface RootViewController : UITableViewController 
  &lt;UITableViewDelegate&gt; 
  {
  
      XMLAppDelegate *appDelegate;
      BookDetailViewController *bdvController;
      UITableViewCell *eventUpCVCell;
  
      UILabel *month;
      UILabel *title;
      UILabel *date;
      UISegmentedControl *segmentedControl;
  
  }
  @property (nonatomic, retain) IBOutlet UITableViewCell *eventUpCVCell;
  @property (nonatomic, retain) IBOutlet UISegmentedControl *segmentedControl;
  
  @property (nonatomic, retain) IBOutlet UILabel *month;
  @property (nonatomic, retain) IBOutlet UILabel *title;
  @property (nonatomic, retain) IBOutlet UILabel *date;
  @end
  </code></pre>
  
  <p><strong>RootViewController.m</strong></p>
  
  <pre><code>#import "RootViewController.h"
  #import "XMLAppDelegate.h"
  #import "Book.h"
  #import "BookDetailViewController.h"
  
  #define kLabel1Tag 1
  #define kLabel2Tag 2
  #define kLabel3Tag 3
  
  @implementation RootViewController
  @synthesize eventUpCVCell, segmentedControl;
  @synthesize month, title, date;
  -(void)viewDidLoad
  {
  
      appDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];
  
      self.title = @"Upcoming Events";
  
      [super viewDidLoad];
  
      NSURL *urlUpcoming = [[NSURL alloc] initWithString:@"http://www.randomosity.com.au/EventsUpcoming.xml"];
      NSURL *urlWeekly = [[NSURL alloc] initWithString:@"http://www.randomosity.com.au/EventsWeekly.xml"];
  }
  
  
  -(IBAction)segmentedAction:(id)sender
  {
  XMLAppDelegate *mainDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];
  
      segmentedControl = (UISegmentedControl *)sender;
  
      if (segmentedControl.selectedSegmentIndex == 0)
      {
  
          mainDelegate.url = [[NSURL alloc] initWithString:@"http://www.randomosity.com.au/EventsUpcoming.xml"];
          [self.tableView reloadData];
      }
      else if (segmentedControl.selectedSegmentIndex == 1)
      {
          NSLog(@"Hello 2");
  
          mainDelegate.url = [[NSURL alloc] initWithString:@"http://www.randomosity.com.au/EventsWeekly.xml"];
          [self.tableView reloadData];
      }
  
  
  }
  
  - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath  
  {
      return 66;  
  
  }
  
  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
      return 1;
  }
  
  
  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
      return [appDelegate.eventDataUp count];
  }
  
  etc etc...
  </code></pre>
  
  <p><strong>XMLAppDelegate.h</strong></p>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  
  @interface XMLAppDelegate : NSObject &lt;UIApplicationDelegate&gt; {
  
      UIWindow *window;
      UINavigationController *navigationController;
      NSString *url;
      NSMutableArray *eventDataUp;
  }
  
  @property (nonatomic, retain) IBOutlet UIWindow *window;
  @property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
  @property (nonatomic, retain) NSString *url;
  @property (nonatomic, retain) NSMutableArray *eventDataUp;
  
  @end
  </code></pre>
  
  <p><strong>XMLAppDelegate.m</strong></p>
  
  <pre><code>#import "XMLAppDelegate.h"
  #import "RootViewController.h"
  #import "XMLParser.h"
  
  @implementation XMLAppDelegate
  
  @synthesize window;
  @synthesize navigationController, eventDataUp;
  @synthesize url;
  
  
  - (void)applicationDidFinishLaunching:(UIApplication *)application {
  
      //RootViewController *rvController = [[RootViewController alloc] init];
  
  
  
      NSURL *urlUpcoming = [[NSURL alloc] initWithString:@"http://www.randomosity.com.au/EventsUpcoming.xml"];
     // NSURL *urlWeekly = [[NSURL alloc] initWithString:@"http://www.randomosity.com.au/EventsWeekly.xml"];
      NSURL *url = urlUpcoming;
      NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
  
      //Initialize the delegate.
      XMLParser *parser = [[XMLParser alloc] initXMLParser];
  
      //Set delegate
      [xmlParser setDelegate:parser];
  
      //Start parsing the XML file.
      BOOL success = [xmlParser parse];
  
      if(success)
          NSLog(@"No Errors");
      else
          NSLog(@"Error Error Error!!!");
  
      // Configure and show the window
      [window addSubview:[navigationController view]];
      [window makeKeyAndVisible];
  }
  
  
  - (void)applicationWillTerminate:(UIApplication *)application {
      // Save data if appropriate
  }
  
  
  - (void)dealloc {
      [eventDataUp release];
      [navigationController release];
      [window release];
      [super dealloc];
  }
  
  @end
  </code></pre>
  
  <p><strong>XMLParser</strong></p>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  
  @class XMLAppDelegate, Book;
  
  @interface XMLParser : NSObject {
  
      NSMutableString *currentElementValue;
  
      XMLAppDelegate *appDelegate;
      Book *eventUp; 
  }
  
  - (XMLParser *) initXMLParser;
  
  @end
  
  
  //
  //  XMLParser.m
  //  XML
  //
  //  Created by iPhone SDK Articles on 11/23/08.
  //  Copyright 2008 www.iPhoneSDKArticles.com.
  //
  
  #import "XMLParser.h"
  #import "XMLAppDelegate.h"
  #import "Book.h"
  
  @implementation XMLParser
  
  - (XMLParser *) initXMLParser {
  
      [super init];
  
      appDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];
  
      return self;
  }
  
  - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
      attributes:(NSDictionary *)attributeDict {
  
      if([elementName isEqualToString:@"EventsUpcoming"]) {
          //Initialize the array.
          appDelegate.eventDataUp = [[NSMutableArray alloc] init];
      }
      else if([elementName isEqualToString:@"Event"]) {
  
          //Initialize the book.
          eventUp = [[Book alloc] init];
  
          //Extract the attribute here.
          eventUp.eventUpID = [[attributeDict objectForKey:@"id"] integerValue];
  
          NSLog(@"Reading id value :%i", eventUp.eventUpID);
      }
  
      NSLog(@"Processing Element: %@", elementName);
  }
  
  - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
  
      if(!currentElementValue) 
          currentElementValue = [[NSMutableString alloc] initWithString:string];
      else
          [currentElementValue appendString:string];
  
      NSLog(@"Processing Value: %@", currentElementValue);
  
  }
  
  - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
  
      if([elementName isEqualToString:@"EventsUpcoming"])
          return;
  
      //There is nothing to do if we encounter the Books element here.
      //If we encounter the Book element howevere, we want to add the book object to the array
      // and release the object.
      if([elementName isEqualToString:@"Event"]) {
          [appDelegate.eventDataUp addObject:eventUp];
  
          [eventUp release];
          eventUp = nil;
      }
      else 
          [eventUp setValue:currentElementValue forKey:elementName];
  
      [currentElementValue release];
      currentElementValue = nil;
  }
  
  - (void) dealloc {
  
      [eventUp release];
      [currentElementValue release];
      [super dealloc];
  }
  
  @end
  </code></pre>