2010-08-04 61 views
0

因此,我们最近开始为我们公司开发用于iPad的应用程序。不幸的是,我们这里没有人做过任何iPhone/iPad的开发,所以我们只是在进行一些学习,然后展翅高飞。基本上,我们的问题在我们尝试在点击表格行时将视图推送到屏幕上时发生。我们都不知道为什么它没有这样做,因为代码看起来100%正确。这里是什么didRowSelectedAtIndex:方法是这样的:iPad/iPhone TableVIew帮助推动新视图

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Navigation logic -- create and push a new view controller 

if(pdvController == nil) 
    pdvController = [[PersonDetailViewController alloc] initWithNibName:@"PersonDetailView" bundle:[NSBundle mainBundle]]; 

Person *aPerson = [appDelegate.people objectAtIndex:indexPath.row]; 

pdvController.aPerson = aPerson; 

[self.appDelegate.navigationController pushViewController:pdvController animated:YES]; 
} 

,这里是为toolbarSearchViewController头:

#import <UIKit/UIKit.h> 

    #import "RecentSearchesController.h" 
    #import "PersonDetailViewController.h" 

    @class ToolbarSearchAppDelegate, PersonDetailViewController; 

    @interface ToolbarSearchViewController : UIViewController <UISearchBarDelegate, UIPopoverControllerDelegate, RecentSearchesDelegate> { 

    ToolbarSearchAppDelegate *appDelegate; 

     UIToolbar *toolbar; 
     UISearchBar *searchBar; 
    UITableView *resultsTable; 

     PersonDetailViewController *pdvController; 
     RecentSearchesController *recentSearchesController; 

    UITableViewController *resultsTableController; 
     UIPopoverController *recentSearchesPopoverController; 

    } 


    @property (nonatomic, retain) IBOutlet UIToolbar *toolbar; 
    @property (nonatomic, retain) UISearchBar *searchBar; 
    @property (nonatomic, retain) IBOutlet UITableView *resultsTable; 

    @property (nonatomic, retain) ToolbarSearchAppDelegate *appDelegate; 
    @property (nonatomic, retain) PersonDetailViewController *pdvController; 
    @property (nonatomic, retain) UITableViewController *resultsTableController; 
    @property (nonatomic, retain) RecentSearchesController *recentSearchesController; 
    @property (nonatomic, retain) UIPopoverController *recentSearchesPopoverController; 



    @end 

和ToolbarSearchAppDelegate标题:

#import <UIKit/UIKit.h> 

@class ToolbarSearchViewController; 

@interface ToolbarSearchAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    ToolbarSearchViewController *viewController; 
UINavigationController *navigationController; 


NSMutableArray *people; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet ToolbarSearchViewController *viewController; 
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 

@property (nonatomic, retain) NSMutableArray *people; 

@end 

终于personDetailController。 h:

#import <UIKit/UIKit.h> 

@class Person; 

@interface PersonDetailViewController : UIViewController { 

IBOutlet UITableView *tableView; 

Person *aPerson; 
} 

@property (nonatomic, retain) Person *aPerson; 
@property (nonatomic, retain) UITableView *tableView; 

@end 

我们变得非常恼火,因为我们都不知道为什么它没有加载,任何帮助或洞察你们可以提供的将是惊人的。我不确定你需要看什么,所以如果你需要更具体的东西,让我知道,我会发布它。谢谢!

ps。我不确定代码标签是如何处理所有Obj-c的古怪语法的,所以如果你看到语法错误,就忽略它们。假设语法正确,并编译和运行...

回答

1

这行看起来有点奇怪:

[self.appDelegate.navigationController pushViewController:pdvController animated:YES]; 

试图使它

[self.navigationController pushViewController:pdvController animated:YES]; 

编辑相加运行时,问题是你没有导航控制器,所以你不能像这样推视图控制器。你可以做的,是推视图控制器模态,使用

[self presentModalViewController:pdvController animated:YES]; 
+0

呀,这条线就是我们最初有。我忘了我们把它改成了另一条线,试图尝试一些不同的东西。将它改回这条线没有任何区别。我现在要尝试将打印报表全部整理出来,看看我是否能够弄清楚发生了什么...... – gabaum10 2010-08-04 14:20:31

+0

在另一个说明中,我已经在调试器中经历了一百万遍,并且它实际上已经到达这些行并执行它们,它只是没有做任何事情。这让我觉得导航控制器没有正确连接到正确的插座,但我不确定它应该在哪里。 – gabaum10 2010-08-04 14:23:41

+0

如果您从未手动设置'self.appDelegate',则它将为零,并且调试器将愉快地执行'[nil.navigationController ...]'这是一个NOOP。 'NSLog(@“navcnt:%x”,self.navigationController);'查看你发送消息的地方。 – mvds 2010-08-04 14:36:19