这个应用程序的问题是TapCatchingController没有收到水龙头 在节标题或节之间。我想学习如何做到这一点。 我试图让我的示例程序尽可能小,但它仍然很长, 对不起然而,代码是自包含的。如果您将其复制并粘贴到您的 AppDelegate,你应该好好去! :)
提前致谢, --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 :(得分:0)
我不确定我是否理解你的问题但是
只有我能看到的问题是viewController的视图添加了[self.view addSubview: vc.view];
,但无法保证它始终位于窗口之上
可能缺少的代码行是[self.view bringSubviewToFront:vc.view];
但是,您可以通过对vc.view
vc.view
是否位于顶部或机器人
我仍然无法理解您在TableViewController
子类中添加视图控制器视图的目标
希望它对你有所帮助