【问题标题】:iOS Fix TableView To Bottom Like Messages AppiOS 将 TableView 固定到底部,就像消息应用程序一样
【发布时间】:2012-08-19 05:02:21
【问题描述】:

所以这完全超出了我的(专业知识?)领域,所以我想我会问一下,看看是否有更有经验的人可以给我一个是或否的答案。

所以,我正在使用 Appcelerator Titanium 来构建一个具有许多表格视图的应用程序。我正在寻找构建它,以便一些 tableViews 从底部开始,我可以向上滚动而不是向下滚动开始,与 iPhone 上的“消息”应用程序完全相同。

它的工作方式是加载内容并自动加载,表格视图固定在底部,然后您可以向上滚动以查看较旧的帖子。

除了创建 tableview、加载数据、然后将其滚动到底部(显然有捕捉)之外,我找不到在 appcelerator 中执行此操作的方法。我可以隐藏 tableview,滚动到底部,然后显示 tableview,但再次......不理想。

现在的问题... 是否可以使用标准的 iOS SDK(不是 appcelerator)来设置一个表格来固定到底部而不是顶部?如果没有,我会有以某种方式找到解决方法。如果是的话,如果可能的话,我想尝试将它构建成钛模块......

无论如何,谢谢!希望这对你们中的一些人来说是一个简单的答案。

【问题讨论】:

    标签: iphone ios scroll tableview


    【解决方案1】:

    其实,这真的很琐碎。像这样的东西会很好用:

    -(void)viewDidLoad {
       //place this at the bottom of your viewDidLoad method, or in any method that initially reloads the table
        NSIndexPath* ipath = [NSIndexPath indexPathForRow: myArray.count-1 inSection: 0];
        [tableView scrollToRowAtIndexPath: ipath atScrollPosition: UITableViewScrollPositionBottom animated: NO]
    }
    

    【讨论】:

    • 这是一个很好的方法。由于 UITableView 继承自 UIScrollView,您还可以查看 UIScrollView 的 -scrollRectToVisible:animatedsetContentOffset:animated:
    • 嘿伙计们,谢谢!我真的希望我有更多关于如何读/写代码的新知识,哈哈,我更像是一个 rails/javascript 人。无论如何,这非常有帮助。我要看看 Appcelerator 是否已经在他们的 sdk 中提供了类似的东西,但是,据我所知,我并没有真正看到类似的方法。很高兴知道这是可能的!只是我很清楚,这种方法将允许表格在加载时保持固定在底部?当新的 tableViewRows 或 Sections 附加到它时,是否有可能(使用这种或类似的方法)让它保持固定在底部?再次感谢!
    • 抱歉,我想编辑太晚了...我的意思是说“前置”而不是“附加”,尽管我猜两者都适用。如果我在底部添加一行,我希望它滚动到新的底部。如果我在顶部添加一行,我希望它保持固定在底部。希望这是有道理的,我并没有把它复杂化!
    • 就像我说的,每当您重新加载表格并希望它滚动到底部时,请在重新加载后在此处调用此代码。
    • 这就是我来这里的目的。你们这些好人让我的声望保持在荒谬的高水平:)
    【解决方案2】:

    我尝试在 viewDidLoad 中滚动,但在视图控制器出现后,我可以看到视图中表格的开头出现。

    我找到了更好的初始滚动位置。

    - (void) viewDidLayoutSubviews {
        [super viewDidLayoutSubviews];
    
        NSInteger lastSectionIndex = MAX(0, [self.chatTableView numberOfSections] - 1);
        NSInteger lastRowIndex = MAX(0, [self.chatTableView numberOfRowsInSection:lastSectionIndex] - 1);
        NSIndexPath *lastIndexPath = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex];
       [self.chatTableView scrollToRowAtIndexPath:lastIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
    }
    

    【讨论】:

    • 这完全取决于您的表格何时加载数据以及您是否使用自动布局。
    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多