【问题标题】:iPad/iPhone TableVIew help pushing a new viewiPad/iPhone TableVIew 帮助推送新视图
【发布时间】:2010-08-05 00:46:36
【问题描述】:

因此,我们最近开始为我们公司开发适用于 iPad 的应用程序。不幸的是,我们这里没有人做过任何 iPhone/iPad 的开发,所以我们只是在快速学习并进行尝试。基本上,当我们在单击表格行时尝试将视图推送到屏幕上时,就会出现问题。我们都无法弄清楚它为什么不这样做,因为我们可以告诉我们,代码看起来 100% 正确。下面是 didRowSelectedAtIndex: 方法的样子:

- (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 的所有古怪语法,因此如果您看到语法错误,请忽略它们。假设它在语法上是正确的,并且会编译和运行......

【问题讨论】:

    标签: iphone ipad ios4


    【解决方案1】:

    这条线看起来有点奇怪:

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

    试着去做

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

    edit 求和操作,问题是你没有导航控制器,所以你不能像那样推送视图控制器。您可以做的,是模态推送视图控制器,使用

    [self presentModalViewController:pdvController animated:YES];
    

    【讨论】:

    • 是的,那条线就是我们最初拥有的。我忘了我们把它改成另一条线是为了尝试不同的东西。将其更改回该行没有任何区别。我现在将尝试将打印语句放在所有地方,看看我是否能弄清楚发生了什么......
    • 在另一个注释中,我已经在调试器中单步执行了一百万次,它实际上到达了这些行并全部执行,它只是没有做任何事情。这让我觉得导航控制器没有正确连接到正确的插座,但我只是不确定它应该在哪里。
    • 如果您从未手动设置self.appDelegate,则它为 nil,调试器会愉快地“执行”[nil.navigationController ...],这是一个 NOOP。 NSLog(@"navcnt: %x",self.navigationController); 以查看您将消息发送到的位置。
    • 嗯,didSelectRowAtIndexPath,在您的视图控制器中吗?如果没有,就把它放在那里,这样 self.navigationController 根据定义指向正确的对象——也就是说,如果有一个 navigationController 可以开始;你有 IB 的吗?
    • 好的,我在viewDidLoad中有这一行:method: appDelegate = (ToolbarSearchAppDelegate *)[[UIApplication sharedApplication] delegate];那应该可以正确设置appDelegate吗?此外,上面的打印语句返回: 2010-08-05 10:43:55.787 ToolbarSearch[727:207] navcnt: 0 我认为这是可以接受的吗?或者你想在那里得到某种回应?
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多