This is definitely possible, Apple doesn't recommend it, but for special cases like yours I agree, use it.
My method:
Make the 2 subview table view controllers without xib files, use -awakeFromNib for setup, rather than viewDidLoad, viewDidLoad will not be called on them. (Wait until the next step before setting up the controllers to load your data, you won't be able to debug until that step works)
Now make a third controller with xib (not table view) and open the xib. Add 2 UITableViewControllers from the library into the window with File's Owner, First Responder, etc. in it, then in the inspector go over to the last tab - change their classes to the 2 custom table view controllers you made.
Next drag 2 table views into the main view, and in the connections tab, tie delegate and datasource to one controller for one table view, and repeat with the other. Also, select the controllers, and connect their view outlet to the table views.
Next you should go into the controller for the main view with xib, and make outlets for the table controllers like this:
@interface class : UIViewController {
UITableViewController *controller1;
UITableViewController *controller2;
}
@property(nonatomic, retain) IBOutlet UITableViewController *controller1;
@property(nonatomic, retain) IBOutlet UITableViewController *controller2;
it is important to use the property so that they are retained, and in the viewDidUnload section, nil them out for memory management: self.controller1 = nil;
Now build and go, and if you managed to follow all this, you should have working table views with controllers, ready to be set up.