2010-10-08 61 views
1

這個應用程序的問題是,TapCatchingController沒有收到部分標題或部分之間的水龍頭 。我想知道我該怎麼做。 我儘量保持我的示例程序儘可能小,但它仍然相當長, 對不起。該代碼是自包含的。如果您將其複製並粘貼到您的AppDelegate 中,那麼您應該很好! :)Gotta Catch'm所有! - 通過UITableView UIView不接收水龍頭

由於提前, --Nick

#import <UIKit/UIKit.h> 

//----------------------------------------------------------------------------------------------- 
//Class InfiniteViewController: Says something when view is tapped, view is invisible to the user 
@interface TapCatchingViewController : UIViewController {} @end 
@implementation TapCatchingViewController 
- (void) loadView { 
    self.view = [[UIView alloc] init]; 
    self.view.alpha = 1.0; 
} 

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"You tapped this! Tuhm-dudu-dum"); } 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } 
- (void) viewWillDisappear:(BOOL)animated { [super viewWillDisappear: animated]; } 
@end 

//----------------------------------------------------------------------------------------------- 
//Class SuperViewControoler: A tableview who has on top of it an InfiniteViewController's view 
//Any tap on a SuperViewController's view should pass through the InfiniteViewController 
@interface SuperViewController : UITableViewController { 
    TapCatchingViewController * vc; 
} 
@end 

static const int sections = 7; 
static const int rowsPerSection = 9; 

@implementation SuperViewController 
- (void) viewDidLoad { 
    vc = [[TapCatchingViewController alloc] init]; 
    vc.view.frame = CGRectInfinite; 
    [self.view addSubview: vc.view]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return sections; } 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return rowsPerSection; } 
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return @"Section Header"; } 
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 250.0f; } 

- (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]; 
    cell.textLabel.text = @"Meow, meow."; 
    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {} 

- (void)dealloc { 
    [vc dealloc]; 
    [super dealloc]; 
} 
@end 

//----------------------------------------------------------------------------------------------- 
//Class AppDelegate! The usual stuff :) 
@interface InfiniviewsAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    UIViewController * vc; 
} 
@property (nonatomic, retain) IBOutlet UIWindow *window; 
@end 

@implementation InfiniviewsAppDelegate 
@synthesize window; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    vc = [[SuperViewController alloc] initWithStyle: UITableViewStyleGrouped]; 
    [window addSubview: vc.view]; 
    [window makeKeyAndVisible]; 
    return YES; 
} 

- (void)applicationWillResignActive:(UIApplication *)application {} 
- (void)applicationDidBecomeActive:(UIApplication *)application {} 
- (void)applicationWillTerminate:(UIApplication *)application {} 
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {} 
- (void)dealloc { 
    [vc release]; 
    [window release]; 
    [super dealloc]; 
} 
@end 

回答

0

我不知道,我理解您的問題或沒有,但 唯一的問題我可以看到的是的viewController的視圖中加入[self.view addSubview: vc.view];但不能保證它始終將窗口的頂部

的代碼行可能缺少的是[self.view bringSubviewToFront:vc.view];

但是您可以檢查vc.view在頂部或機器人通過應用不同的顏色來vc.view

不過,我無法理解你的目標你爲什麼在TableViewController子類添加視圖控制器的看法

希望這對你有幫助