-1

我的应用程序在 ios 5.1 和 xcode 4.4.1 中运行良好现在当我更新 ro ios 6 和 xcode 4.5 时,它在更改视图时崩溃。我使用故事板来制作我的 UI。在第一个视图中,我得到 TableViewController,当我选择一个单元格时,它应该转到另一个包含 3 个按钮、1 个滑块、1 个 UITableView 和 2 个标签的视图。这些东西通过 IBOutlet 连接到控制器。在第二种观点中,我认为这种方法结束后发生了崩溃

-(void)viewWillAppear:(BOOL)animated

以及此时的代码库

0x347735aa:  ldr    r4, [r0]

我该怎么办 ?编辑:这是我的堆栈跟踪

0 objc_msgSend
1 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]:
2 -[UITableView _userSelectRowAtPendingSelectionIndexPath:]:
3 __NSFireDelayedPerform:
4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__:
5 __CFRunLoopDoTimer:
6 __CFRunLoopRun:
7 CFRunLoopRunSpecific:
8 CFRunLoopRunInMode:
9 GSEventRunModal:
10 UIApplicationMain:
11 main at main.m:14:
4

3 回答 3

2

willSelectRowAtIndexPath您的方法语法有误。它应该是

-(NSIndexPath *)tableView:willSelectRowAtIndexPath:不是

-(void)tableView:willSelectRowAtIndexPath:

于 2012-09-28T19:04:39.703 回答
1

我在跟踪后发现问题并一遍又一遍地阅读我的代码。问题是我使用了这种方法

- (void)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

知道选择了哪个单元格。但我认为 ios 6 这种方法有问题。所以当我把它改成

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

一切正常。我仍然不知道为什么会这样。

于 2012-09-22T07:22:43.830 回答
0

tableView:willSelectRowAtIndexPath:只是通知代理即将选择表中的一行,nil如果您不希望选择特定行,您可以返回,或者如果您认为您的应用程序需要它,则返回不同的 IndexPath。

由于该方法从未打算触发深入到您的详细视图控制器,我认为您的旧调用在 iOS 6 上崩溃是公平的。您“幸运”它以前工作过。

于 2012-09-22T07:35:23.110 回答