देखने से पहले iPhone पर UITableView के नीचे स्क्रॉल कैसे करें


136

मेरे पास एक UITableViewचर ऊंचाई की कोशिकाओं के साथ आबादी है। जब तालिका दृश्य में धकेल दी जाए, तो मैं तालिका को नीचे तक स्क्रॉल करना चाहूंगा।

वर्तमान में मेरे पास निम्न कार्य हैं

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[log count]-1 inSection:0];
[self.table scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];

लॉग एक उत्परिवर्तित सारणी होती है जिसमें ऑब्जेक्ट होते हैं जो प्रत्येक सेल की सामग्री बनाते हैं।

उपरोक्त कोड ठीक काम करता है, viewDidAppearहालांकि इसमें तालिका के शीर्ष को प्रदर्शित करने का दुर्भाग्यपूर्ण पक्ष प्रभाव होता है जब दृश्य पहले दिखाई देता है और फिर नीचे की ओर कूदता है। मैं इसे पसंद करूंगा यदि table viewयह दिखाई देने से पहले नीचे तक स्क्रॉल किया जा सके।

मैंने स्क्रॉल करने की कोशिश की viewWillAppearऔर viewDidLoadदोनों ही मामलों में डेटा अभी तक तालिका में लोड नहीं किया गया है और दोनों ने एक अपवाद फेंक दिया है।

किसी भी मार्गदर्शन की बहुत सराहना की जाएगी, भले ही यह सिर्फ मुझे यह बताने का मामला हो कि मेरे पास क्या है यह सब संभव है।

जवाबों:


148

मुझे विश्वास है कि बुला रहा है

 tableView.setContentOffset(CGPoint(x: 0, y: CGFloat.greatestFiniteMagnitude), animated: false)

जो चाहोगे, करोगे।


14
यह सही है धन्यवाद। मैंने पर्याप्त रूप से उच्च Y मान के साथ एक CGPoint बनाया जो इसे हमेशा नीचे प्रदर्शित करेगा। एक बार जब दृश्य लोड हो जाता है तो मैं उसी विधि के साथ नीचे जाने के लिए
self.table.contentSize.height

8
यद्यपि यह सही उत्तर है, क्योंकि हमें कितने सेल, टेबलव्यू आदि की ऊंचाई के लिए गणना करने की आवश्यकता नहीं है .. लेकिन मैं यह इंगित करूंगा कि हमें टेबलव्यू को पुनः लोड करने से पहले इसे कॉल करने की आवश्यकता है ... यह काम नहीं करेगा यदि हम इसके बाद लिखिए[table reloadData];
फहीम पारकर

4
आईओएस 10-12 पर काम नहीं करता है - तालिका पहली बार गायब हो जाती है
व्याचेस्लाव गेर्चिकोव

2
या बस स्क्रॉल करें CGPoint(x: 0, y: tableView.contentSize.height)?
अंबर के

5
ओह !!! तालिका को गायब कर देता है: -o। [Self.table ScrollToRowAtIndexPath: indexPath atScrollPosition: UITableViewScrollPositionBottom एनिमेटेड: NO] का उपयोग करते हुए सर्वश्रेष्ठ;
कार्ल हाइन

122

मुझे लगता है कि यह सबसे आसान तरीका है:

if (self.messages.count > 0)
{
    [self.tableView 
        scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self.messages.count-1 
        inSection:0] 
        atScrollPosition:UITableViewScrollPositionBottom animated:YES];
}

स्विफ्ट 3 संस्करण:

if messages.count > 0 {
    userDefinedOptionsTableView.scrollToRow(at: IndexPath(item:messages.count-1, section: 0), at: .bottom, animated: true)
}

3
यह काम नहीं करता है अगर सेल UITableView से अधिक लंबा है
ओलाव गौसेकर

3
सेल UITableView की तुलना में लंबा है? इस तरह के उपयोग के मामले को कभी नहीं सुना।
चमीरा फर्नांडो

@ChamiraFernando यह सबसे आसान तरीका है :)
AITAALI_ABDERRAHMANE

ध्यान दें कि यह messages.countपहले से लागू द्वारा प्रतिस्थापित करने के लिए समझ में आ सकता है myTableView.dataSource!.tableView(myTableView, numberOfRowsInSection: 0)। हाँ यह लंबा है, लेकिन यह कोड पुनरावृत्ति से बच सकता है। आपको वैकल्पिक को संभालने की भी आवश्यकता है dataSource(इस नमूने में जैसा कि लागू न करें)।
निकोले सुवंद्झिवे

@ChamiraFernando मुझे पता है कि यह सवाल पुराना है, लेकिन सिर्फ इसलिए कि आपने कभी नहीं देखा, इसका मतलब यह नहीं है कि ऐसा नहीं होता है। आपके प्रश्न का उत्तर देने के लिए, फोरस्क्वेयर जैसे ऐप में यह स्थिति हो सकती है, जहाँ उपयोगकर्ता समीक्षा लिखता है। सेल की ऊंचाई टेबलव्यू की ऊंचाई से महान है। इसकी पूरी तरह से ठीक स्थिति है।
कैओ

121

से याकूब का जवाब , इस कोड है:

- (void) viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if (self.messagesTableView.contentSize.height > self.messagesTableView.frame.size.height) 
    {
        CGPoint offset = CGPointMake(0, self.messagesTableView.contentSize.height - self.messagesTableView.frame.size.height);
        [self.messagesTableView setContentOffset:offset animated:YES];
    }
}

IOS 11 पर आपको समायोजित तालिका दृश्य फ़्रेम ऊँचाई का उपयोग करना चाहिए:UIEdgeInsetsInsetRect(self.messagesTableView.frame, self.messagesTableView.safeAreaInsets).height
Slav

41

यदि आपको सामग्री के अंतिम छोर तक स्क्रॉल करने की आवश्यकता है, तो आप इसे इस तरह से कर सकते हैं:

- (void)scrollToBottom
{
    CGFloat yOffset = 0;

    if (self.tableView.contentSize.height > self.tableView.bounds.size.height) {
        yOffset = self.tableView.contentSize.height - self.tableView.bounds.size.height;
    }

    [self.tableView setContentOffset:CGPointMake(0, yOffset) animated:NO];
}

7
Autolayout के साथ काम करता है, लेकिन यह महत्वपूर्ण है कि इस विधि को viewDidLayoutSubviews
Omaty

क्या आप बता सकते हैं कि हमें ऐसा करने की आवश्यकता क्यों है yOffset = self.tableView.contentSize.height - self.tableView.bounds.size.height; :? धन्यवाद।
अनहिलिग

3
@Unheilig यदि आप self.tableView.contentSize.heightतालिका की सामग्री को स्क्रॉल करेंगे तो दृश्य दिखाई नहीं दे सकता है, क्योंकि आप सामग्री के नीचे स्क्रॉल करते हैं। इसलिए आपको तालिका दृश्य के अंत में एक "दृश्यमान तालिका दृश्य अंतराल" पर स्क्रॉल करना होगा।
हंस एक

31

मैं ऑटोलॉययट का उपयोग कर रहा हूं और मेरे लिए जवाब में से किसी ने भी काम नहीं किया। यहाँ मेरा समाधान है कि अंत में काम किया है:

@property (nonatomic, assign) BOOL shouldScrollToLastRow;


- (void)viewDidLoad {
    [super viewDidLoad];

    _shouldScrollToLastRow = YES;
}


- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    // Scroll table view to the last row
    if (_shouldScrollToLastRow)
    {
        _shouldScrollToLastRow = NO;
        [self.tableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)];
    }
}

1
यह लगभग मेरे लिए काम करता है, लेकिन मुझे एक अजीब ग्राफिकल गड़बड़ मिलती है, जबकि मेरा टेबल डेटा बाहरी एपीआई से लोड हो रहा है। मेरे मामले में क्या मुझे setContentOffsetकिसी अन्य बिंदु पर कॉल करने की आवश्यकता है जब डेटा प्राप्त किया गया है और टेबलव्यू फिर से लोड किया गया है?
jmoz

अपने अनुरोध के पूरा होने वाले हैंडलर में ऑफ़सेट सेट करने का प्रयास करें।
राफेल

2
यह ios 10 में काम नहीं करता है - बस एक काली पृष्ठभूमि के साथ एक तालिका दिखाता है
RunLoop

2
प्रारंभिक सामग्री ऑफसेट सेट करते समय CGFLOAT_MAXमैंने उपयोग contentSize.height - frame.height + contentInset.bottomकरने के बजाय उपयोग किया । उपयोग करना CGFLOAT_MAXमेरे लिए गड़बड़ लग रहा था।
बाज़ा

23

@JacobRelkin द्वारा स्वीकार किए जाते हैं समाधान आईओएस 7.0 में मेरे लिए काम नहीं किया ऑटो लेआउट का उपयोग कर।

मेरे पास एक कस्टम उपवर्ग है UIViewControllerऔर इसके उदाहरण के _tableViewरूप में एक उदाहरण चर जोड़ा गया है view। मैंने _tableViewऑटो लेआउट का उपयोग करके तैनात किया । मैंने इस पद्धति को अंत में कॉल करने का प्रयास कियाviewDidLoad और यहां तक ​​कि किया viewWillAppear:। न काम किया।

तो, मैंने अपने कस्टम उपवर्ग में निम्नलिखित विधि जोड़ी UIViewController

- (void)tableViewScrollToBottomAnimated:(BOOL)animated {
    NSInteger numberOfRows = [_tableView numberOfRowsInSection:0];
    if (numberOfRows) {
        [_tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:numberOfRows-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:animated];
    }
}

कार्यों [self tableViewScrollToBottomAnimated:NO]के अंत में कॉलिंग viewDidLoad। दुर्भाग्य से, यह भी tableView:heightForRowAtIndexPath:हर कोशिका के लिए तीन बार कहा जाता है।


23

यहाँ एक विस्तार है जो मैंने स्विफ्ट 2.0 में लागू किया है। tableviewलोड होने के बाद इन कार्यों को बुलाया जाना चाहिए :

import UIKit

extension UITableView {
    func setOffsetToBottom(animated: Bool) {
        self.setContentOffset(CGPointMake(0, self.contentSize.height - self.frame.size.height), animated: true)
    }

    func scrollToLastRow(animated: Bool) {
        if self.numberOfRowsInSection(0) > 0 {
            self.scrollToRowAtIndexPath(NSIndexPath(forRow: self.numberOfRowsInSection(0) - 1, inSection: 0), atScrollPosition: .Bottom, animated: animated)
        }
    }
}

3
यह सामग्री आकार का उपयोग करने से बेहतर है। स्विफ्ट 3 के लिए। if self.numberOfRows (inSection: 0)> 0 {self.scrollToRow (at: IndexPath.init (पंक्ति: self.numberOfRows (inSection: 0) -1), सेक्शन 0), at: .bottom, एनिमेटेड: एनिमेटेड)}
सोहवन पार्क

अगर ScrollToLastRow यह तरीका सही काम नहीं कर रहा है तो बस self.layoutIfNeeded () जोड़ें और यह सही काम है !!
योगेश पटेल

16

विवरण

  • Xcode 8.3.2, स्विफ्ट 3.1
  • Xcode 10.2 (10E125), स्विफ्ट 5

कोड

import UIKit

extension UITableView {
    func scrollToBottom(animated: Bool) {
        let y = contentSize.height - frame.size.height
        if y < 0 { return }
        setContentOffset(CGPoint(x: 0, y: y), animated: animated)
    }
}

प्रयोग

tableView.scrollToBottom(animated: true)

पूरा नमूना

समाधान कोड पेस्ट करना न भूलें!

import UIKit

class ViewController: UIViewController {

    private weak var tableView: UITableView?
    private lazy var cellReuseIdentifier = "CellReuseIdentifier"

    override func viewDidLoad() {
        super.viewDidLoad()
        let tableView = UITableView(frame: view.frame)
        view.addSubview(tableView)
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
        self.tableView = tableView
        tableView.dataSource = self
        tableView.performBatchUpdates(nil) { [weak self] result in
            if result { self?.tableView?.scrollToBottom(animated: true) }
        }
    }
}

extension ViewController: UITableViewDataSource {

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 100
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath )
        cell.textLabel?.text = "\(indexPath)"
        return cell
    }
}

15

वास्तव में इसे स्विफ्ट में करने का एक "स्विफ्टर" तरीका है:

var lastIndex = NSIndexPath(forRow: self.messages.count - 1, inSection: 0)
self.messageTableView.scrollToRowAtIndexPath(lastIndex, atScrollPosition: UITableViewScrollPosition.Bottom, animated: true)

मेरे लिए बिल्कुल सही काम करें।


9

मैं चाहता था कि तालिका फ्रेम में दिखाए गए तालिका के अंत के साथ लोड हो। मैंने उपयोग करते हुए पाया

NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:([self.tableView numberOfRowsInSection:0] - 1) inSection:0];
[[self tableView] scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];

काम नहीं किया क्योंकि यह एक त्रुटि देता था जब तालिका की ऊंचाई फ्रेम की ऊंचाई से कम थी। ध्यान दें मेरी तालिका में केवल एक खंड है।

मेरे लिए काम करने वाला समाधान निम्नलिखित कोड को लागू कर रहा था।

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// on the initial cell load scroll to the last row (ie the latest Note)
if (initialLoad==TRUE) {
    initialLoad=FALSE; 
    NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:([self.tableView numberOfRowsInSection:0] - 1) inSection:0];
    [[self tableView] scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
        CGPoint offset = CGPointMake(0, (1000000.0));
        [self.tableView setContentOffset:offset animated:NO];
    }
}

BOOL ivar initialLoad को TRUE में viewDidLoad के लिए सेट किया गया है।


क्या आपको कॉल करने की आवश्यकता है scrollToRowAtIndexPath? आप पहले से ही कॉल कर रहे हैं setContentOffset, जो कि पहले कॉल को व्यर्थ कर सकता है।
कार्लोस पी।

9

स्विफ्ट के लिए:

if tableView.contentSize.height > tableView.frame.size.height {
    let offset = CGPoint(x: 0, y: tableView.contentSize.height - tableView.frame.size.height)
    tableView.setContentOffset(offset, animated: false)
}


5

स्विफ्ट 3 (Xcode 8.1) के लिए:

override func viewDidAppear(_ animated: Bool) {
    let numberOfSections = self.tableView.numberOfSections
    let numberOfRows = self.tableView.numberOfRows(inSection: numberOfSections-1)

    let indexPath = IndexPath(row: numberOfRows-1 , section: numberOfSections-1)
    self.tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.middle, animated: true)
}

3
यह ओपी प्रश्न का उत्तर नहीं देता है, यह वही है जो शुरू से काम कर रहा था। इसके अलावा आप सुपर .viewDidAppear
streem

4

बेशक एक बग है। संभवतः आपके कोड में कहीं आप उपयोग करते हैं table.estimatedRowHeight = value(उदाहरण के लिए 100)। इस मान को उच्चतम मान से बदलें जो आपको लगता है कि एक पंक्ति की ऊंचाई मिल सकती है , उदाहरण के लिए 500 .. यह निम्नलिखित कोड के साथ संयोजन में समस्या को हल करना चाहिए:

//auto scroll down example
let delay = 0.1 * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))

dispatch_after(time, dispatch_get_main_queue(), {
    self.table.scrollToRowAtIndexPath(NSIndexPath(forRow: self.Messages.count - 1, inSection: 0), atScrollPosition: UITableViewScrollPosition.Bottom, animated: false)
})

4

बहुत कुछ करने के बाद यह मेरे लिए काम कर रहा है:

var viewHasAppeared = false

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    if !viewHasAppeared { goToBottom() }
}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    viewHasAppeared = true
}

private func goToBottom() {
    guard data.count > 0 else { return }
    let indexPath = NSIndexPath(forRow: data.count - 1, inSection: 0)
    tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Bottom, animated: false)
    tableView.layoutIfNeeded()
}

कुंजी के रूप में कुछ सुझाव दिया है के अंदर लपेट नहीं किया जा करने के लिए निकला , लेकिन बस एक कॉल के साथ इसका पालन कर रहा हैscrollToRowAtIndexPathdispatch_asynclayoutIfNeeded

इस बारे में मेरी समझ, वर्तमान थ्रेड में स्क्रॉल विधि को कॉल करना यह सुनिश्चित करता है कि दृश्य प्रदर्शित होने से पहले स्क्रॉल ऑफ़सेट तुरंत सेट हो जाए । जब मैं मुख्य धागे को भेज रहा था, तो स्क्रॉल के प्रभावी होने से पहले एक पल के लिए दृश्य प्रदर्शित हो रहा था।

(इसके अलावा एनबी आपको viewHasAppearedध्वज की आवश्यकता है क्योंकि आप goToBottomहर बार नहीं चाहते हैं, viewDidLayoutSubviewsइसे कहा जाता है। यह उदाहरण के लिए बुलाया जाता है जब भी अभिविन्यास बदलता है।)


3

उपरोक्त समाधानों का उपयोग करते हुए, यह आपकी तालिका के नीचे स्क्रॉल करेगा (केवल यदि तालिका सामग्री पहले लोड की गई है):

//Scroll to bottom of table
CGSize tableSize = myTableView.contentSize;
[myTableView setContentOffset:CGPointMake(0, tableSize.height)];


2

यदि आपको नीचे स्क्रॉल करने से पहले एसिंक्रोनस रूप से डेटा लोड करना है, तो यहां संभव समाधान है:

tableView.alpha = 0 // We want animation!
lastMessageShown = false // This is ivar

viewModel.fetch { [unowned self] result in
    self.tableView.reloadData()

    if !self.lastMessageShown {
        dispatch_async(dispatch_get_main_queue()) { [unowned self] in
            if self.rowCount > 0 {
                self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: self.rowCount, inSection: 0), atScrollPosition: .Bottom, animated: false)
            }

            UIView.animateWithDuration(0.1) {
                self.tableView.alpha = 1
                self.lastMessageShown = true // Do it once
            }
        }
    }
}

2

स्विफ्ट 3 पर कार्य करने के लिए नीचे स्क्रॉल करें

 override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(false)
        //scroll down
        if lists.count > 2 {
            let numberOfSections = self.tableView.numberOfSections
            let numberOfRows = self.tableView.numberOfRows(inSection: numberOfSections-1)
            let indexPath = IndexPath(row: numberOfRows-1 , section: numberOfSections-1)
            self.tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.middle, animated: true)
        }
    }

2
func scrollToBottom() {

    let sections = self.chatTableView.numberOfSections

    if sections > 0 {

        let rows = self.chatTableView.numberOfRows(inSection: sections - 1)

        let last = IndexPath(row: rows - 1, section: sections - 1)

        DispatchQueue.main.async {

            self.chatTableView.scrollToRow(at: last, at: .bottom, animated: false)
        }
    }
}

आपको जोड़ना चाहिए

DispatchQueue.main.async {
            self.chatTableView.scrollToRow(at: last, at: .bottom, animated: false)
        }

या यह नीचे तक स्क्रॉल नहीं करेगा।


2

तालिका दृश्य नीचे स्क्रॉल करने के लिए इस सरल कोड का उपयोग करें

NSInteger rows = [tableName numberOfRowsInSection:0];
if(rows > 0) {
    [tableName scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:rows-1 inSection:0]
                     atScrollPosition:UITableViewScrollPositionBottom
                             animated:YES];
}

1
यह मूल रूप से ओपी ने कहा कि उसने पहले से ही कोशिश की थी। यह जवाब ओपी के प्रश्न को संबोधित नहीं करता है कि यह कैसे देखने के लिए इसे ठीक से देखने के लिए काम करें।
jk7

2

उत्तर के लिए धन्यवाद याकूब। वास्तव में उपयोगी अगर किसी को भी मोनोटच सी # संस्करण के साथ दिलचस्प है

private void SetScrollPositionDown() {
    if (tblShoppingListItem.ContentSize.Height > tblShoppingListItem.Frame.Size.Height) {
        PointF offset = new PointF(0, tblShoppingListItem.ContentSize.Height - tblShoppingListItem.Frame.Size.Height);
        tblShoppingListItem.SetContentOffset(offset,true );
    }
}

1

आईओएस में यह मेरे लिए ठीक काम किया

CGFloat height = self.inputTableView.contentSize.height;
if (height > CGRectGetHeight(self.inputTableView.frame)) {
    height -= (CGRectGetHeight(self.inputTableView.frame) - CGRectGetHeight(self.navigationController.navigationBar.frame));
}
else {
    height = 0;
}
[self.inputTableView setContentOffset:CGPointMake(0, height) animated:animated];

इससे बुलाने की जरूरत है viewDidLayoutSubviews


1

[self.tableViewInfo scrollRectToV अदृश्य: CGRectMake (0, self.tableViewInfo.contentSize.height-self.tableViewInfo.height, self.tableViewInfo. उपलब्धता, self.tableViewInfo.height) एनिमेटेड: YES];


1

स्वीकृत उत्तर मेरी तालिका (हजारों पंक्तियों, गतिशील लोडिंग) के साथ काम नहीं करता था, लेकिन नीचे दिए गए कोड काम करते हैं:

- (void)scrollToBottom:(id)sender {
    if ([self.sections count] > 0) {
        NSInteger idx = [self.sections count] - 1;
        CGRect sectionRect = [self.tableView rectForSection:idx];
        sectionRect.size.height = self.tableView.frame.size.height;
        [self.tableView scrollRectToVisible:sectionRect animated:NO];
    }
}

1

आपको इस कोड का उपयोग करके किसी भी स्क्रॉलिंग की आवश्यकता नहीं है:

[YOURTABLEVIEWNAME setContentOffset:CGPointMake(0, CGFLOAT_MAX)];

1

यदि आप टेबलव्यू के लिए प्रोग्रामेटिक रूप से फ्रेम सेट कर रहे हैं, तो सुनिश्चित करें कि आप फ्रेम को सही ढंग से सेट कर रहे हैं।


0

स्विफ्ट में, आपको बस जरूरत है

self.tableView.scrollToNearestSelectedRowAtScrollPosition(UITableViewScrollPosition.Bottom, animated: true)

इसे स्वचालित रूप से नितंब तक स्क्रॉल करने के लिए


0

स्विफ्ट 3.0 में यदि आप किसी विशेष सेल ऑफ़ टेबलव्यू को बदलना चाहते हैं तो सेल इंडेक्स वैल्यू चेंज जैसे "self.yourArr.count" वैल्यू।

self.yourTable.reloadData()
self.scrollToBottom() 
func scrollToBottom(){
    DispatchQueue.global(qos: .background).async {
        let indexPath = IndexPath(row: self.yourArr.count-1, section: 0)
        self.tblComment.scrollToRow(at: indexPath, at: .bottom, animated: true)
    }
}

0

मेरा मानना ​​है कि पुराने समाधान स्विफ्ट 3 के साथ काम नहीं करते हैं।

यदि आप तालिका में संख्या पंक्तियों को जानते हैं तो आप उपयोग कर सकते हैं:

tableView.scrollToRow(
    at: IndexPath(item: listCountInSection-1, section: sectionCount - 1 ), 
    at: .top, 
    animated: true)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.