Objective c 视图中的EXC\u BAD\u访问错误将使用ScrollToRowatineXpath显示

Objective c 视图中的EXC\u BAD\u访问错误将使用ScrollToRowatineXpath显示,objective-c,tableview,exc-bad-access,viewwillappear,Objective C,Tableview,Exc Bad Access,Viewwillappear,在VIEWWILLEXPEND方法中使用ScrollToRowatineXpath时,我遇到EXC\u BAD\u访问错误。我搜索了一些解决方案,看到一些老帖子建议将delegate和table设置为nil(参见下面的代码),但是当我设置为nil时,我根本没有在tableview中加载任何内容。 我应该说,这是聊天应用程序的一部分,我想显示首先输入的最后一条消息。非常感谢您在这方面的帮助。 以下是我的视图: -(void)viewWillAppear:(BOOL)animated { [

在VIEWWILLEXPEND方法中使用ScrollToRowatineXpath时,我遇到EXC\u BAD\u访问错误。我搜索了一些解决方案,看到一些老帖子建议将delegate和table设置为nil(参见下面的代码),但是当我设置为nil时,我根本没有在tableview中加载任何内容。 我应该说,这是聊天应用程序的一部分,我想显示首先输入的最后一条消息。非常感谢您在这方面的帮助。 以下是我的视图:

-(void)viewWillAppear:(BOOL)animated {
    [self.table reloadData];
    int lastRowNumber = [self.table numberOfRowsInSection:0] - 1;
    NSIndexPath* ip = [NSIndexPath indexPathForRow:lastRowNumber inSection:0];
    //self.table.delegate = nil;
    //self.table = nil;
    [self.table scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionTop animated:YES];

}
我应该补充一点,这段代码在我的程序的其他部分似乎工作得很好,我唯一得到错误的时候是在viewwillispect方法中。

它可能会对您有所帮助

NSIndexPath * lastIndex =[NSIndexPath indexPathForRow:yourContenetArray.count-1 inSection:0];

[self.yourTableView scrollToRowAtIndexPath:lastIndex atScrollPosition:UITableViewScrollPositionNone animated:YES];

视图将出现:
在视图中制作动画为时过早。Per:

在视图控制器的视图即将打开之前调用此方法 在配置任何动画之前添加到视图层次 用于显示视图。您可以重写此方法以执行自定义 与显示视图关联的任务。例如,您可以使用 此方法用于将状态栏的方向或样式更改为 与显示的视图的方向或样式相协调。 如果重写此方法,则必须在应用程序中的某个点调用super 实施


因此,即使未完全设置视图层次结构,也无法添加动画。

您可能应该使用
viewDidLoad
方法进行滚动,如果数组计数为0(空数组),则会抛出错误。无法滚动到索引
-1

处的单元格,请尝试将动画设置为“否”。我看不出您的代码有任何错误。我创建了一个演示项目,并将您的代码复制到其中。它工作得很好。您的数据源可能有问题。您好,谢谢,但我仍然收到相同的EXC\u BAD\u访问错误。事实上,这段代码在我的程序的其他部分也能工作,错误只发生在viewwillbeen中。您好,谢谢您的回复,但是这并不能清除错误。无论我使用的是ViewWillDisplay还是ViewDidDisplay,我都会遇到相同的错误。您好,在重新加载tableview之后,您是否尝试过您的代码?是的,我在视图中重新加载了导致错误的代码,但仍然得到了错误。或者您建议将其放在其他位置?使用重新加载tableview,然后在ViewWillDisplay中为ScrolTorowatinIndexPath编写代码,否则在ViewDidDisplay中编写相同的代码。
Write your code in viewDidAppear method.As your table view is loaded 
then after you should call the method scrollToRowAtIndexPath . Then 
your animation will be performed.And if you want to use in 
viewWillAppear , then You can try to reload your tableView and then
write code for scrollToRowAtIndexPath