【问题标题】:AQGridview Not Calling Datasource MethodsAQGridview 不调用数据源方法
【发布时间】:2011-05-09 20:23:52
【问题描述】:

我正在尝试基于 /examples 文件夹中的 ImageDemo 实现 AQGridView。我有一个带有以下声明的视图控制器:

@interface ImageDemoViewController : UIViewController <AQGridViewDelegate,   AQGridViewDataSource, ImageDemoCellChooserDelegate>
{
...

我的视图控制器中没有任何数据源方法,例如

- (NSUInteger) numberOfItemsInGridView: (AQGridView *) aGridView
{
return ( [images count] );
}

正在被调用。这是我设置gridview的地方,使我的视图控制器成为gridview的代表。

- (void)viewDidLoad
{
[super viewDidLoad];   
self.gridView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
self.gridView.autoresizesSubviews = YES;
self.gridView.delegate = self;
self.gridView.dataSource = self;

images=[[NSMutableArray alloc]init];
[images addObject:@"http://t3.gstatic.com/images?q=tbn:ANd9GcTOXAzFMoK441mcn9V0OemVe_dtAuCpGjBkLrv4rffyOjYIo45BEw"];
[self.gridView reloadData];
}

如果我设置断点

[self.gridView reloadData];

该行已执行,但未调用 AQGridView 中的 reloadData 方法。与 ImageDemo 的唯一区别是我没有用于视图控制器的 .xib 文件。我是不是忘了连接一些东西,导致数据源方法没有被调用?

【问题讨论】:

    标签: iphone xcode aqgridview


    【解决方案1】:

    如果没有 XIB,那么谁在创建 gridView?如果它从未创建过,那么它将是 NIL,并且您将拥有您所描述的行为。 (如果是这样,那么只需添加: self.gridview = [AQGridView alloc] initWithFrame: ...]; 应该足够了。

    【讨论】:

    • gridview 是在视图控制器中以编程方式创建的。
    • 很抱歉有点挑剔,但是在调用 reloadData 时,您是否使用调试器或 NSLog 检查 self.gridView 是有效的 AQGridView?那时没有委托概念,只是一个直接的方法调用。如果有效,那么 [x y] 就不可能不调用对象 x 的方法 y。
    【解决方案2】:

    遇到了同样的问题。通过用 AQGridView替换 view 解决。
    [self.view addSubview:self.gridView]

     self.view = self.gridView;
    

    完整方法:

    - (void) viewDidLoad
    {
        [super viewDidLoad];
    
        self.gridView = [[AQGridView alloc] init];
        self.gridView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
        self.gridView.autoresizesSubviews = YES;
        self.gridView.delegate = self;
        self.gridView.dataSource = self;
    
        self.view = self.gridView;
    
        [self.gridView reloadData];
    }
    

    【讨论】:

    • 我发现重载数据部分是这里的关键部分。
    【解决方案3】:

    也许你可以尝试实现这个:

    - (void)LoadSearch
    {
        NSURL *test1 = [NSURL URLWithString:@"http://www.4ddraws.com/search_iphone.asp"];
        NSURLRequest *test = [NSURLRequest requestWithURL:test1];
        [web4D setScalesPageToFit:(YES)];
        [web4D loadRequest:test];
    
    }
    

    【讨论】:

    • 对不起,这个答案与问题有什么关系?
    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多