2012-08-13 44 views
0

我一直试图实现在UITableView s的定制一个ScrollView(链接到Page Control为清楚起见)中显示的数据UITTableViewCell秒的接口。如何实现滚动型内动态UITTableViews与动态量“页”

我发现了几个教程,展示了如何实现这些功能彼此分开但不是在一起,我真的没有找到任何关于如何将一些自定义UITableView加载到控制器中的任何东西。我的基本做法现在归结到这里面的UIViewControllerviewDidLoad

for (int i = 0; i < 4; i++) { 
    CGRect frame; 
    frame.origin.x = self.scrollView.frame.size.width * i; 
    frame.origin.y = 0; 
    frame.size = self.scrollView.frame.size; 

    SceduleTableView *sceduleTable = [[SceduleTableView alloc] initWithFrame:frame]; 

    [sceduleTable setDelegate:sceduleTable]; 
    [sceduleTable setDataSource:sceduleTable]; 
    [self.scrollView addSubview:sceduleTable]; 
} 

我一直在用4页的测试,但这些将变成一个动态的量,我可以工作了这一点之后。

SceduleTableView从UITableView继承,并具有数据源,该数据源获取带有对象的数组,该对象不在本地sqlite数据库中。我已经得到了部分工作,其中所有的SceduleTableViews加载数据为他们每个人,但此刻的构建失败并返回此错误:

2012-08-13 15:43:18.975 basis[2055:f803] -[SceduleTableView tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x8bc4800 
2012-08-13 15:43:18.976 basis[2055:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SceduleTableView tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x8bc4800' 

,这个功能并没有真正做多,但即使永远达不到的NSLog:

- (NSInteger)numberOfRowsInSection:(NSInteger)section 
{ 
    NSLog(@"Should have %d rows", sceduleItems.count); 
    return sceduleItems.count; 
} 

而且我知道,无论我尝试填写表格与阵列是不是空的,SceduleTableView实例不是零(我看,这可能已经问题)。这些日志返回此为每个SceduleTableView

NSLog(@"Array sceduleItems contains %d", sceduleItems.count); 
NSLog(@"Trying to reload. Self = %@", self); 
[self reloadData]; 

2012-08-13 15:49:32.183 basis[2259:f803] Array sceduleItems contains 340 
2012-08-13 15:49:32.184 basis[2259:f803] Trying to reload. Self = <SceduleTableView: 0xbabb800; baseClass = UITableView; frame = (960 0; 320 440); clipsToBounds = YES; layer = <CALayer: 0x6e29660>; contentOffset: {0, 0}> 

我在iOS开发非常新的,说实话,我真的不知道,如果连我的做法是正确的。反馈非常感谢!

回答

1

系统尝试调用方法tableView:numberOfRowsInSection:。你还没有定义。您已经定义了方法numberOfRowsInSection:,覆盖了UITableView的默认实现。请不要这样做。

你应该定义

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    NSLog(@"Should have %d rows", sceduleItems.count); 
    return sceduleItems.count; 
} 
在你的数据源

。另外,许多开发人员可能会对你使用你的表视图对象作为他们自己的委托和数据源而感到不满。也许你想熟悉Model-View-Controller范例,寻找更常见的设计方案。

+0

谢谢,我的意思是正确覆盖它。我一定没有注意。 另外,感谢您指出正确的阅读材料。我明天就会尝试。 – GMBrian 2012-08-13 21:33:22