1

我正在编写一个具有分组 tableView 的应用程序,该应用程序具有包含 UITextViews 在模态 segue 中的自定义单元格。我希望能够编辑每个单元格/文本视图中的文本。我的问题是滚动视图底部的单元格/文本视图,以便它们出现时出现在键盘上方。

编辑:prepareForSegue 按照评论中的要求:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"update info"]) {
        UpdatesTableViewController *uvc = (UpdatesTableViewController *)segue.destinationViewController;
        uvc.dumpInfo = self.dumpInfo;
    }
}

如果我使用 UITableView 控制器,一切都会很好 - 当 textview 成为 firstResponder 时,每个单元格/文本视图都会向上滚动到视图顶部,因此可以在编辑时看到它。但是当 tableView 滚动时,我添加到 tableView 顶部的导航栏会滚动。

如果我使用 UIViewController 并添加导航栏和表格视图,我可以使用 UITableView scrollToRowAtIndexPath:atScrollPosition:animated: 方法让它向上滚动单元格。导航栏保持固定。但是底部的单元格不能向上滚动到足以显示的高度。

- (void)textViewDidBeginEditing:(UITextView *)textView
{
    CGPoint location = [textView.superview convertPoint:textView.center toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition: UITableViewScrollPositionTop animated:YES];
}

UITableView 控制器正在做一些很酷的魔法来完成这项工作——我想做的就是将导航栏固定在视图顶部的位置。

4

1 回答 1

1

您可以按照我的评论中所述使用UITableViewControllerWrapped in 。UINavigationController这将在屏幕上显示默认导航栏,并且不会与 tableview 一起滚动。UITableViewController需要设置为UINavigationController.

由于您面临崩溃[UINavigationController setDumpInfo:]: unrecognized selector sent to instance,您需要将您的 prepareForSegue 方法更改为,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"update info"]) {
        UINavigationController *nav = (UINavigationController *)segue.destinationViewController;
        UpdatesTableViewController *uvc = (UpdatesTableViewController *)nav.topViewController;
        uvc.dumpInfo = self.dumpInfo;
    }
}

在这种情况下,基本上dumpInfo 被调用navigationController而不是你的。tableviewcontroller

于 2013-01-04T03:59:22.390 回答