2017-04-25 77 views
1

我在視圖控制器內部有一個uitableview,在我的uitableview下面有一個按鈕。點擊此按鈕打開模式視圖。iOS Obj-C - UITableView數據在模態視圖消失時消失

modalview.m

- (IBAction)closeButton:(id)sender { 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

然而,當我點擊解僱我的模態視圖,所有的數據在我的UITableView:我用下面的代碼創建了我的語氣裏一個「關閉」按鈕似乎消失了(可用視圖變白了)?任何想法,爲什麼這可能是,我該如何解決它?這是我的tableview數據的加載方式和結構化(希望這有助於):

ViewController.m

-(void)updateMessages { 

     self.tableView.dataSource = self; 

     NSMutableDictionary *viewParams = [NSMutableDictionary new]; 
     [viewParams setValue:@"name" forKey:@"view_name"]; 
     [DIOSView viewGet:viewParams success:^(AFHTTPRequestOperation *operation, id responseObject) { 


      self.messages = (NSMutableArray *)responseObject; 

      [self.tableView reloadData]; 


     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      NSLog(@"Failure: %@", [error localizedDescription]); 
     }]; 



    } 

    - (void)viewDidLoad { 
     [super viewDidLoad]; 

     [self updateMessages]; 

     static NSString *ChatTableIdentifier = @"ChatTableViewCell"; 
     static NSString *ChatTableIdentifier2 = @"SwapDetailTableViewCell"; 


     UINib *nib = [UINib nibWithNibName: ChatTableIdentifier bundle:nil]; 
     [self.tableView registerNib:nib forCellReuseIdentifier: ChatTableIdentifier]; 

     UINib *nib2 = [UINib nibWithNibName: ChatTableIdentifier2 bundle:nil]; 
     [self.tableView registerNib:nib2 forCellReuseIdentifier: ChatTableIdentifier2]; 


      self.tableView.dataSource = self; 

     [self.tableView reloadData]; 

    } 

    - (int)numberOfSectionsInTableView: (UITableView *)tableview 

    { 
     return 1; 

    } 


    - (int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    { 

     return [self.messages count]; 


    } 



    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 


     NSDictionary *data = self.messages[indexPath.row]; 

     id swaptime = data[@"swaptime"]; 
     if ([swaptime isKindOfClass:[NSString class]]) { 
      // There is a valid "swaptime" value 
      static NSString *ChatTableIdentifier2 = @"SwapDetailTableViewCell"; 

      SwapDetailTableViewCell *cell = (SwapDetailTableViewCell *)[tableView dequeueReusableCellWithIdentifier:ChatTableIdentifier2 forIndexPath:indexPath]; 

      NSString *time = data[@"swaptime"]; 
      cell.startTime.text = time; 

      NSString *timeEnd = data[@"endswaptime"]; 
      cell.endTime.text = timeEnd; 

      NSString *costofSwap = data[@"swapvalue"]; 
      cell.swapValue.text = costofSwap; 

      NSString *fromUsername = data[@"first name"]; 
      cell.fromUser.text = fromUsername; 

      NSString *pet = data[@"pet's name"]; 
      cell.petsname.text = pet; 


      NSString *swapStatus = data[@"swapaccepted"]; 

      if ([swapStatus isEqual: @"Yes"]) { 

      [cell.displayedBar setImage:[UIImage imageNamed:@"greenbar.png"]]; 

       cell.swapTitle.text = @"Accepted!";} 


      else { 

       if ([swapStatus isEqual: @""]) { 

        [cell.displayedBar setImage:[UIImage imageNamed:@"orangecellbar.png"]]; 

        cell.swapTitle.text = @"You have a Request!";} 

       if ([swapStatus isEqual: @"Requested"]) { 

        [cell.displayedBar setImage:[UIImage imageNamed:@"orangecellbar.png"]]; 

        cell.swapTitle.text = @"You have a Request!";} 

       if ([swapStatus isEqual: @"Cancelled"]) { 

        [cell.displayedBar setImage:[UIImage imageNamed:@"blueecellbar.png"]]; 

        cell.swapTitle.text = @"Cancelled!";} 

       if ([swapStatus isEqual: @"No"]) { 

        [cell.displayedBar setImage:[UIImage imageNamed:@"redbar.png"]]; 

        cell.swapTitle.text = @"Declined!"; 


      } 


      } 

      return cell; 

     } else { 
      static NSString *ChatTableIdentifier = @"ChatTableViewCell"; 

      ChatTableViewCell *cell = (ChatTableViewCell *)[tableView dequeueReusableCellWithIdentifier:ChatTableIdentifier forIndexPath:indexPath]; 

      NSString *userName = data[@"first name"]; 
      cell.sendingUser.text = userName; 

      NSString *messageBody = data[@"body"]; 
      cell.messageDisplayed.text = messageBody; 

      NSString *timeReceived = data[@"published at"]; 
      cell.timeStamp.text = timeReceived; 


      NSString *userInfo = [self.userid objectForKey:@"first name"]; 


      if ([cell.sendingUser.text isEqual: userInfo]) { 

       cell.messageDisplayed.textAlignment = NSTextAlignmentLeft; 
       cell.sendingUser.textAlignment = NSTextAlignmentLeft; 


       [cell.chatBubble setImage:[UIImage imageNamed:@"bubblegrey2.png"]]; 


      } else { 

      cell.messageDisplayed.textAlignment = NSTextAlignmentRight; 
      cell.sendingUser.textAlignment = NSTextAlignmentRight; 


       [cell.chatBubble setImage:[UIImage imageNamed:@"bubbleorange2.png"]]; 

      } 

      return cell; 
     } 
    } 

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


    [self.tableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)]; 


} 
+0

「viewWillAppear」或「viewDidAppear」中是否有任何內容?或者任何影響你的模態的tableView的東西?嘗試添加背景顏色到你的表格視圖,看看它是否仍然存在或者不見 – Tj3n

+0

@ Tj3n請參閱上面的編輯viewDidAppear中的內容。我已經做到了這樣,當用戶登陸這個視圖時,它會自動滾動到tableview的底部。我使用的代碼會影響這個嗎? – Brittany

+0

爲什麼將表視圖的內容偏移量設置爲如此大的值?這條線的目標是什麼? – rmaddy

回答

0

這個問題可能是你的viewDidAppear,嘗試更換:

[self.tableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)]; 

附:

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:[self.messages count]-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 

或正確計算高度,可能是:

self.tableView.contentView.height 
+0

用您建議的替換該行會導致崩潰(EXC_BAD_ACCESS)。 – Brittany