2016-04-01 23 views
2

Uygulamayı çalıştırdığımda, yüklü olmadığı, ancak telefonumu yatay moda getirdiğimde boş girişleri gösteren özel bir tablo görünümü var. Görünüşe göre, bana gerçekten mantıklı gelmiyor. Baska öneri?Tablo Manzara modunda telefonu yerleştirdiğimde yalnızca yükleri göster

Düzenleme: İşte benim kod

import UIKit 
import Alamofire 
import ObjectMapper 
class LotteryTableViewController: UITableViewController { 
let lotteryMachine = LotteryMachine() 

var currentStandings: [Team] = [] 
var draftStandings: [Team] = [] 
override func viewDidLoad() { 
    super.viewDidLoad() 

    let headers = [ 
     "User-agent": "LotteryMachine/1.0 ([email protected])", 
       ] 
     Alamofire.request(.GET, "https://erikberg.com/nba/standings.json",headers: headers) 
      .responseJSON { response in 
       let parentJson = Mapper<Standings>().map(response.2.value) 
       let standingsArray: [Team] = parentJson!.standing! 
        self.currentStandings=standingsArray 
        self.draftStandings=self.lotteryMachine.setPossibleCombinations(standingsArray) 
        self.draftStandings=self.lotteryMachine.setDraftPositions(self.draftStandings) 
        print (self.draftStandings.toJSON()) 
       } 

    } 




    // Uncomment the following line to preserve selection between presentations 
    // self.clearsSelectionOnViewWillAppear = false 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem() 


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

// MARK: - Table view data source 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 

    return 1 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return draftStandings.count 
} 


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cellIdentifier = "LotteryTableViewCell" 


    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! LotteryTableViewCell 


    let position = self.draftStandings[indexPath.row].draftingPosition! 

    let teamName = self.draftStandings[indexPath.row].lastName! 
    let record = String(self.draftStandings[indexPath.row].won!) + "-" + String(self.draftStandings[indexPath.row].lost!) 

    let player = "Ben Simmons" 
    cell.position.text = String(position) 
    cell.teamName.text = teamName 
    cell.record.text = String(record) 
    cell.player.text = player 
    cell.teamLogo.image = UIImage(named: "lakers") 



    // Configure the cell... 

    return cell 
} 


/* 
// Override to support conditional editing of the table view. 
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    // Return false if you do not want the specified item to be editable. 
    return true 
} 
*/ 

/* 
// Override to support editing the table view. 
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
    if editingStyle == .Delete { 
     // Delete the row from the data source 
     tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    } else if editingStyle == .Insert { 
     // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
    }  
} 
*/ 

/* 
// Override to support rearranging the table view. 
override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { 

} 
*/ 

/* 
// Override to support conditional rearranging of the table view. 
override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    // Return false if you do not want the item to be re-orderable. 
    return true 
} 
*/ 

/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
*/ 

}

+0

CSS'sini kontrol ettiniz. Genellikle CSS'de medya sorgularını kullanarak belirli bir manzara/portre modu için bir öğeyi gizleyebiliriz. –

+0

Kısıtlamayı nasıl ayarladınız? 'space space' yerine 'sondaki alanı' dene ' – Lee

+0

' viewWillAppear' yönteminde tablo görünümünü yeniden yüklediniz mi? –

cevap

2

Alamofire.request doğada zaman uyumsuz olmasıdır. Bu nedenle, tablo ilk yüklendiğinde, istek hala devam ediyor ve draftStandings ürününüzde veri yok. Döndürdüğünüzde, tablo yeniden yüklenir ve o zamana kadar draftStandings tablonun gösterdiği bazı veriler vardır.

İstek yanıtında draftStandings ayarladıktan sonra tableView.reloadData() eklemeye çalışın.

+0

yup, öyleydi. Teşekkürler –

+0

, sekmeler yüklenmeden önce http isteğini çağırmak ve standingsArray öğelerini her iki seküme de aktarmak istediğimi söyleyebiliriz. Bunu nasıl yapabilirim? –

+0

Kullanıcı arabiriminizi yüklemeden önce n/w işleminin tamamlanmasını beklemem (bu tür bir uygulama ile devam ederseniz yapmanız gerekecek). Async çağrıları her zaman tercih edilir – lostInTransit

İlgili konular