簡體   English   中英

iOS Obj-C - 當模態視圖被解除時,UITableView數據消失

[英]iOS Obj-C - UITableView data disappears when modal view dismissed

我在視圖控制器中有一個uitableview,在我的uitableview下面有一個按鈕。 點擊此按鈕可打開模態視圖。 我使用以下代碼在我的模態中創建了一個“關閉”按鈕:

modalview.m

- (IBAction)closeButton:(id)sender {

     [self dismissViewControllerAnimated:YES completion:nil];
}

然而,當我點擊以關閉我的模態視圖時,我的uitableview中的所有數據似乎都消失了(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)];


}

問題可能出在你的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM