2017-02-03 18 views
0

テーブルを下にスクロールする必要があります。私はviewwilAppearでテーブルをスクロールするコードを記述すると動作しませんが、viewDidAppearで同じコードを書くと表示されますスクロールあなたはスクロールがあなただけのスクロール機能にanimated引数としてfalseを渡す必要がアニメ化させたくない場合は、私はViewWillAppear.`swift自動レイアウトのcellForRowAtIndexの問題へのスクロール

override func viewWillAppear(animated: Bool) 
{ 
    super.viewWillAppear(animated) 
    UIApplication.sharedApplication().delegate!.window!!.windowLevel = UIWindowLevelNormal 
    self.view.backgroundColor = UIColor.whiteColor() 
    viewWillAppearExecuted = true 
    executeCodeOfViewViewAppear() 
} 

func executeCodeOfViewViewAppear() { 

    if viewWillAppearExecuted { 

     viewWillAppearExecuted = false 

     if appNeedsAutoResize{ 
      self.noLongerParticipantMessageLabel.font = UIUtils.getFontForApproprieteField(.Footnote).font 
      self.typingStatusLabel.font = UIUtils.getFontForApproprieteField(.Headline).font 
     } 

     withAnimationFlag = true 

     if !self.composeBar.textView.isFirstResponder() 
     { 
      // This block will execute if compose bar is first responder 
      self.updateTableBottomCnt(value:self.composeBar.frame.size.height) 


      // Update compose bar constarint 
      if self.composeBarBottomConstraing.constant != 0 
      { 
       self.composeBarBottomConstraing.constant = 0 
      } 
     } 

     self.isOpenNextScreen = false 

     self.checkIfloginUserisActiveMember() 

     self.tabBarController?.tabBar.hidden = true 
     ChatCommonCall.sharedInstance.currentThreadIdForPush = self.threadInfo.threadId 

     // This block is used for make a responder to keyboard for send message. 
     if shouldComposeBarFirstResponder == true { 
      self.composeBar.becomeFirstResponder() 
      shouldComposeBarFirstResponder = false 
     } 

     self.showMessageById(self.messageIdForMessageDisplay) 

     ChatCommonCall.sharedInstance.isChatModuleScreen = true 
     self.changeFrame() 
     self.composeBar.button.enabled = self.composeBar.text.trim().length > 0 ? true : false 
     /// Table frame changes. 
     switch self.optType 
     { 
     case .NewMessageSection: 
      break 
     case .DoNotHandle : 
      break 
     case .None : 
      if !(self.messageIdForMessageDisplay.isEqual(Guid.emptyGuid())) 
      { 
       self.optType = .ShowMessageOfID(id: self.messageIdForMessageDisplay) 
      } 
      else { 
       self.optType = .ScrollToBottom 
      } 
      break 
     default : 
      break 
     } 

     switch self.optType 
     { 
     case .NewMessageSection : 
      break 
     default : 
      self.handleOptType() 
     } 

     //Implemented the new observer pattern in the whole project where we suppose to refresh the screen for background sync data 
     //By Nikhil Kumar Saraf on 19 July 2016 
     Notifier.Unregister() 
     let observer = DatabaseObserverInfo(tName: ["chatthread","chatthreadmember","chatmessage","chatmessagereceiver","chatthumbnail","pfthumbnail","chatmessagemarker"], oType: [SyncOpType.Insert,SyncOpType.Update,SyncOpType.Delete], observer: self, stick: false, syncTrigger: SyncTriggerType.Post) 
     Notifier.Register(observer) 


     //By Balkrishan Yadav for AutoResizing UI on 30 Nov. 2016 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ChatMessageController.didChangePreferredContentSize(_:)), name:UIContentSizeCategoryDidChangeNotification, object: nil) 

     // This condition will execute if some one sharing image and coming to the chat message screen 
     //@Balkrishan Yadav 
     if ChatCommonCall.sharedInstance.attachmentInfo != nil { 
      self.addFileInComposeBar(ChatCommonCall.sharedInstance.attachmentInfo!) 
      ChatCommonCall.sharedInstance.attachmentInfo = nil 
      let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.3 * Double(NSEC_PER_SEC))) 
      dispatch_after(dispatchTime, dispatch_get_main_queue(), { 
       // your function here 
       // self.changeController(true) 
      }) 
     } 
    } 
} 
func handleOptType(callFromViewDidAppear:Bool = false) { 
     switch optType { 
     case .ScrollToBottom : // No new message is available. show last message.   self.messageTableView.setContentOffset(CGPointMake(0,CGFloat.max), animated: !isCameFromThreadComposer) 
      break 
     default: 
    // do nothing 
    } 
+0

いくつかのコードを投稿できますか? – Jerry

答えて

0

でtableScrollingを作る方法をスクロールし、ユーザーを表示したくありません。例えば:

tableView.scrollToRow(at: indexPath, at: .top, animated: false) 

この関数は、任意のアニメーションなしでテーブルビューの上部にindexPathの行をスクロールすることになります。

+0

animated flagはfalseです。このメソッドを使用しても同じ結果が得られます。 –

+0

スクロールしているコードを表示できますか?私はあなたの 'executeCodeOfViewViewAppear'関数でそれを見つけることができません。 –

+0

メソッドを参照してください –

関連する問題