0

ich eine UITableView mit einigen komplexen Zellen,UITableView wird neu geladen, wenn presentviewcontroller oder Pushviewcontroller

Wenn ich presentviewcontroller oder Pushviewcontroller, wenn ich die Taste in der Zelle drücken,

es Daten automatisch neu geladen wird,

Wie kann ich es stoppen?

dies ist die Basis-Controller

import UIKit 

class Controller: UIViewController{ 
    override func viewDidLoad() { 
     super.viewDidLoad(); 

     initView(); 
    } 

    func initView(){ 
     self.view.backgroundColor = UIColor.whiteColor(); 
    } 

    override func preferredStatusBarStyle() -> UIStatusBarStyle { 
     return UIStatusBarStyle.LightContent; 
    } 
} 

und das ist die zweite Ebene

import Foundation 

class LoadableController: Controller { 

    var requestNum      : Int = 0; 

    func loadData(complete: (()->Void)? = nil){ 
     self.requestComplete(); 
    } 

    func requestComplete(){ 
     if(self.requestNum == 0){ 
      requestFinished(); 
      return; 
     } 
     self.requestNum = self.requestNum > 0 ? self.requestNum - 1 : 0; 
     if(self.requestNum == 0){ 
      requestFinished(); 
     } 
    } 

    func requestFinished(){} 
} 

dies die dritte Ebene ist

class TableListViewController: LoadableController, UITableViewDelegate, UITableViewDataSource { 

    var tableView   : UITableView?; 
    var curPage    : Int = 0; 
    var totalPage   : Int = 0; 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func initView() { 
     super.initView(); 

     tableView = UITableView(); 
     tableView!.delegate = self; 
     tableView!.dataSource = self; 
     tableView!.delaysContentTouches = false; 
     tableView!.canCancelContentTouches = true; 
     self.view.addSubview(tableView!); 
     tableView!.snp_makeConstraints { [unowned self](make) in 
      make.edges.equalTo(self.view); 
     } 

     let header = EGRefresh(refreshingTarget: self, refreshingAction: #selector(self.loadData)); 
     header.setImages(Global.LOADING_IMAGES, duration: 0.16, forState: .Idle); 
     header.setImages(Global.LOADING_IMAGES, duration: 0.16, forState: .Pulling); 
     header.setImages(Global.LOADING_IMAGES, duration: 0.16, forState: .WillRefresh); 
     header.setImages(Global.LOADING_IMAGES, duration: 0.16, forState: .Refreshing); 
     header.lastUpdatedTimeLabel.hidden = true; 
     tableView!.mj_header = header; 

     let footer = MJRefreshBackNormalFooter.init(refreshingTarget: self, refreshingAction: #selector(self.loadNext)); 
     tableView!.mj_footer = footer; 
    } 

    func loadNext(){ 
     tableView!.mj_footer.endRefreshing(); 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("ListCell", forIndexPath: indexPath); 
     return cell; 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 1; 
    } 

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1; 
    } 

    override func requestFinished() { 
     tableView!.mj_header.endRefreshing(); 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    deinit{ 
     DDLogInfo("TableListViewController deinit"); 
    } 

} 

und hier ist der Ort, wo die Tableview reload automatisch.

import UIKit 

class CircleViewController: TableListViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad(); 
    } 

    override func initView(){ 
     super.initView(); 

     self.title = "Circle"; 

     let items = ["One", "Two"]; 
     let segment = UISegmentedControl(items: items); 
     segment.selectedSegmentIndex = 0; 
     segment.setWidth(80, forSegmentAtIndex: 0); 
     segment.setWidth(80, forSegmentAtIndex: 1); 
     self.navigationItem.titleView = segment; 

     tableView!.estimatedRowHeight = 50; 
     tableView!.rowHeight = UITableViewAutomaticDimension; 
//  tableView!.contentInset = UIEdgeInsetsMake(Dimens.TopBarHeight, 0, 0, 0); 
     tableView!.registerClass(TextOnlyCell.self, forCellReuseIdentifier: "CircleTextOnlyCell"); 
     tableView!.registerClass(ImageAndPageCell.self, forCellReuseIdentifier: "CircleImageAndPageCell"); 

     Event.addEventListener(self, selector: #selector(self.goComment(_:)), name: EventType.CIRCLE_COMMENT, object: nil); 
    } 

    func goComment(ns: NSNotification) { 
     let commentView = PostCommentViewController(); 
     self.navigationController?.pushViewController(commentView, animated: true); 
    } 

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension; 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 10; 
    } 

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     tableView.deselectRowAtIndexPath(indexPath, animated: true); 
    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1; 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     var cell = tableView.dequeueReusableCellWithIdentifier("CircleImageAndPageCell", forIndexPath: indexPath) as? ImageAndPageCell; 
     if cell == nil { 
      cell = ImageAndPageCell.init(style: .Default, reuseIdentifier: "CircleImageAndPageCell"); 
     } 
     let images = [UIImage(named: "b.jpg")!, UIImage(named: "a.jpg")!, UIImage(named: "c.jpg")!, UIImage(named: "a.jpg")!]; 
     cell?.initView(nil, nickname: "im a nickname", time: "10 min", content: NSMutableAttributedString(string: "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf"), likeNum: 10, commentNum: 12, shareNum: 13, totalLine: 20, images: images, cellIndex: indexPath.row, hasPage: true, pageIcon: UIImage(named: "c.jpg")!, titleStr: "ahahaha"); 
     return cell!; 
    } 

    override func loadData(complete: (() -> Void)?) { 
     self.requestComplete(); 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    deinit { 
     Event.removeAllEventListener(self); 
     DDLogInfo("CircleViewController deinit"); 
    } 
} 

Wenn goComment,

aufgerufen wird, die Viewcontroller geschoben werden,

dann die Tableview nach oben springen,

ich einen Haltepunkt zu dem cellForRowAtIndexPath hinzufügen,

heißt es.

dann habe ich versucht, den presentviewcontroller,

dieses Problem auch geschah,

obwohl ich in dem Außenviewcontroller presentviewcontroller tat.


es Daten nicht nachladen scheint,

es scrollt einfach nach oben.

+0

Zeigen Sie uns bitte Ihren Code, damit wir Ihnen besser helfen können. –

+0

@DiogoAntunes Ich habe meinen Beitrag bearbeiten, PLZ Hilfe, danke! –

Antwort

0

es ist wie Tabellenansicht nicht auf der Suche die UIToolbar Größe (44 Punkte) in Berücksichtigung

Speicher das Offset in Tableview prepareForSegue: (in einer CGPoint Eigenschaft speichern)

self.tableViewScrollOffset = self.tableView .contentOffset;

Überprüfen Sie dann in viewWillAppear:, ob es geändert wurde. Wenn ja, stelle es wieder her.

if (self.tableView.contentOffset.y = self.tableViewScrollOffset.y!) { [self.tableView setContentOffset: self.tableViewScrollOffset]; self.tableViewScrollOffset = CGPointZero; }

+0

es scheint wie ein Fehler von iOS 8.0 bis 8.2 –