To fix that change your struts and springs to the following: When you do that, you get this: Now you’ll notice the y coordinate is off a bit here.
I told it to go to the origin (0,0) but it is ignoring me.
Connect the table view from the Storyboard to your View Controller as a new IBOutlet.
To add a table header view, grab a view and drop it near the top of your table view.
The appropriate approach then can only logically be to dispatch the UI update onto the main thread from the background thread when new data has actually been received.
The idea is that there's some data that is updated very quickly (i.e.
The more correct way to handle this sort of stuff, in my opinion, isn't to have a looping updater that refreshes your entire UI every 10ms (consider a more complicated view with several more elements to update).
Just as we can from the main thread put code to run on a background thread, from a background thread, we can add code to the main queue.
I completely agree that dispatching back to the main queue is the ideal way to do it (in fact, in my SO answer, I said to try that first), but that doesn't always work.
If you make that change in the code I posted, for example, you fill up the main queue faster than it can handle and the UI hangs.