0

我正在尝试将不同 (Table)ViewController 中的 TableView 实现为 Scrollview。我现在确实尝试了几个小时,但我无法弄清楚问题所在。我得到的错误是:

-[UISectionRowData numberOfSectionsInTableView:]:无法识别的选择器发送到实例 0x687fdb0 2012-05-07 16:47:18.966 Test2[12212:f803] *由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UISectionRowData numberOfSectionsInTableView:]:无法识别的选择器发送到实例 0x687fdb0'

这是我正在使用的代码段(在 viewDidLoad() 方法中实现):

DateSubviewController *dateSubviewController = [[DateSubviewController alloc] init];
//This is the tableViewController which handles the code from the tableView I want to implement. 

NSArray *views = [NSArray arrayWithObjects: [dateSubviewController view], nil];

self.scrollView.delegate = self;
self.pageControlBeingUsed = YES;

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

    UITableView *subview = [views objectAtIndex:i];
    [self.scrollView addSubview:subview];

    subview = nil;
}

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * views.count, self.scrollView.frame.size.height);

滚动视图正在自己工作(使用不同颜色的框架对其进行了测试)。

问题似乎是,[dateSubviewController view] 没有调用 tableView 工作所需的方法。视图出口与 tableView 连接,但在情节提要中“变灰” 。我认为它可能指向错误的视图,所以我已经尝试删除 tableView 并重新连接它。这没有效果。整个 viewDidLoad() 方法完成后,崩溃立即出现。

当我尝试使用

NSArray *views = [NSArray arrayWithObjects: [dateSubviewController dateTable], nil];

(dateTable是我尝试实现的tableView)直接访问tableView数组视图在调试中包含0个元素。也不调用 TableView 委托方法。但它不会崩溃。

我不知道该怎么办了。我在这个问题上工作了大约 6 个小时,调试了几次,做了互联网研究,但没有找到任何东西。谢谢你的时间!

4

2 回答 2

3

经过几个小时的工作,我现在发现这是自动释放池的问题。当我初始化viewController ...

DateSubviewController *dateSubviewController = [[DateSubviewController alloc] init];

...它是一个局部变量,并在viewDidLoad()方法完成后立即释放。我不得不将它用作实例变量!我希望这也为未来的读者解决了这个错误!

在要初始化 ViewController 的类的头文件中:

@property (strong, nonatomic) DateSubviewController * dateSubviewController;

然后以这种方式初始化它:

    self.dateSubviewController = [[DateSubviewController alloc] init];
于 2012-05-08T12:33:02.240 回答
0

根据错误,您应该清楚您的tableView的dataSource没有响应tableView需要的方法。因为我猜你已经有一个应该是这个数据源的对象(一个实现 tableView:numberOfRowsInSection:) 的对象,很可能你没有将 tableView 的 dataSource 属性设置为这个对象,而是另一个对象。检查您的代码或 Xib,并修复您的 tableView 的 dataSource 链接。

先做这个。

之后你可能会遇到其他问题。你会看到的。但首先要解决这个问题,并学会阅读和理解你的错误。用您不理解的单词记录自己,例如“实例”、“选择器”、“异常”。了解错误是成功调试的关键。

于 2012-05-08T08:21:53.153 回答