【发布时间】:2012-02-14 02:45:07
【问题描述】:
所以我有一个分段控件,可以在两个子 UIViews 之间切换,这两个子 UIViews 都包含 UITableView。但是,每当我单击表中的某一行时,它都无法将主 UIView 推送到 DetailView 中。
简单地说,我试图让子 UIView(包含 TableView)将(深灰色)主 UIView 推送到详细视图中
我错过了什么?
MenuViewController.H
@class MenuDrinksViewController;
@class MenuFoodViewController;
@interface MenuViewController : UIViewController
{
MenuDrinksViewController *menuDrinksViewController;
MenuFoodViewController *menuFoodViewController;
UISegmentedControl *segmentedControl;
}
@property (nonatomic, retain) UISegmentedControl *segmentedControl;
@end
MenuViewController.m
#import "MenuDrinksViewController.h"
#import "MenuFoodViewController.h"
@implementation MenuViewController
@synthesize segmentedControl;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = NSLocalizedString(@"Menu", @"Menu");
self.tabBarItem.image = [UIImage imageNamed:@"first"];
}
return self;
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
menuDrinksViewController = [[MenuDrinksViewController alloc] init];
menuFoodViewController = [[MenuFoodViewController alloc] init];
AppearanceClass *appearanceClass = [[AppearanceClass alloc] init];
// segmented controller
segmentedControl = [[UISegmentedControl alloc] initWithItems:[[NSArray alloc] initWithObjects:@"Food", @"Drinks", nil]];
[appearanceClass setSegmentedControl:segmentedControl];
[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:segmentedControl];
[self.view addSubview:menuFoodViewController.view];
menuDrinksViewController.view.frame = CGRectMake(0, 40, 320, 367);
menuFoodViewController.view.frame = CGRectMake(0, 40, 320, 367);
[self loadMenuFoodXML];
[self loadMenuDrinksXML];
}
-(IBAction)segmentAction:(id)selector
{
if (segmentedControl.selectedSegmentIndex == 0)
{
[self.view addSubview:menuFoodViewController.view];
[menuDrinksViewController.view removeFromSuperview];
} else if (segmentedControl.selectedSegmentIndex == 1)
{
[self.view addSubview:menuDrinksViewController.view];
[menuFoodViewController.view removeFromSuperview];
}
}
MenuFoodViewController.h
@interface MenuFoodViewController : UIViewController
<UITableViewDelegate>
{
NSMutableArray *dMenu;
UITableView *TableView;
}
@property (nonatomic, retain) NSMutableArray *fMenu;
@end
MenuFoodViewController.m
#import "AppDelegate.h"
#import "AppearanceClass.h"
#import "MenuFoodViewController.h"
#import "MenuFood.h"
#import "MenuDrinks.h"
#import "Item.h"
#import "MenuFoodCustomTableViewCell.h"
#import "MenuFoodDetailViewController.h"
@implementation MenuFoodViewController
@synthesize fMenu;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = NSLocalizedString(@"Menu", @"Menu");
self.tabBarItem.image = [UIImage imageNamed:@"first"];
}
return self;
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
AppearanceClass *appearanceClass = [[AppearanceClass alloc] init];
self.view.backgroundColor = [UIColor clearColor];
// TableView
TableView.frame = CGRectMake(0, 0, 320, 327);
[self.view addSubview:TableView];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
MenuFoodDetailViewController *menuFoodDetailViewController = [[MenuFoodDetailViewController alloc] initWithNibName:@"MenuFoodDetailViewController" bundle:nil];
MenuFood *aMenuFood = [fMenu objectAtIndex:indexPath.section];
Item *aItem = [aMenuFood.item objectAtIndex:indexPath.row];
menuFoodDetailViewController.item = aItem;
menuFoodDetailViewController.navigationItem.title = @"food";
[self.navigationController pushViewController:menuFoodDetailViewController animated:YES];
[tableView deselectRowAtIndexPath:indexPath animated:NO];
NSLog(@"This is being pressed");
}
【问题讨论】:
-
我不明白你的问题。其他人可以一样
标签: iphone objective-c ios cocoa-touch uiview