I have a class like this:
@interface ExerciseLogDetails : UIViewController<UIActionSheetDelegate, UITableViewDelegate, UITableViewDataSource> {
where I am trying to display some elements followed by a UITextView. The UITextView element is created on Interface Builder. When executing this code:
- (void)viewDidLoad {
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
tableView.dataSource = self;
tableView.delegate = self;
[self.view addSubview:self.tableView];
}
a table shows, but not the one I configured in Interface Builder. It is completely blank and unformatted. How can I access my table and populate it progrmmatically with data?
Thank you!
If you configured a tableView in IB you shouldn’t also create one programmatically, you should create
@property (nonatomic, retain) IBOutlet UITableView *tableView;and connect it to the tableView you configured in IB.Try to set a breakpoint in the tableView’s
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectiondelegate method to see if this method get called.
From Apple UITableView docs:
As u can see if u don’t set a dataSource to your tableView, the tableView will not know how and what to display, so nothing will happen.
You can set one by calling
tableView.dataSource = self;or in IB drag from your tableView to the file’s owner (that is your viewController that must implement theUITableViewDataSourceProtocol)There are two methods in the
UITableViewDataSourceprotocol that your dataSource must implement:and
If u won’t implement those methods u will get a compiler warnings.
You can have more control on how the tableView will look if you implement the
UITableViewDelegateprotocol – like row/header/footer height, selections and more…From Apple UITableView docs:
ReloadData get called when the tableView is created or when you assign a new dataSource (or when you explicitly call it of course..).
This is when the tableView needs to know what to display (how many sections?, how many rows?, and which cell to display?) – So this is when
numberOfRowsInSextionmethod called.