我对这个Native App dev相当新 - 我已经构建了一个包含UITableViewController来显示消息的应用程序 - 一切正常 - 但出于样式原因,我需要将它从TableViewController更改为嵌入在viewcontroller中的tableview。
我创建了一个包含表视图和相关链接自定义单元格/字段的视图控制器,并将关联的头文件更改为 -
@interface NotificationsListTVController : UIViewController
但是我的表方法不再开火了,我不确定如何实例化它们?
(下面的代码) #pragma mark - 表视图数据源
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return self.GPTNotifications.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
static NSString *CellIdentifierRead = @"CellRead";
UITableViewCell *cell;
notifications *n = [self.GPTNotifications objectAtIndex:indexPath.row];
if (n.read == false) {
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
CustomCellRead *cellReadB = (CustomCellRead *)cell;
cellReadB.notifTitle.text = n.notifTitleD;
cellReadB.notifDate.text = n.notifDateD;
cellReadB.notifMsg.text = n.notifMessage;
return cellReadB;
}
else {
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierRead forIndexPath:indexPath];
CustomCell *cellReadB = (CustomCell *)cell;
cellReadB.notifTitle.text = n.notifTitleD;
cellReadB.notifDate.text = n.notifDateD;
cellReadB.notifMsg.text = n.notifMessage;
return cellReadB;
}
}
答案 0 :(得分:2)
您是否将tableview的委托和数据源设置为您的班级?
类似的东西:
self.myTableView.delegate = self;
self.myTableView.dataSource = self;
当你创建一个UITableViewController时,这就完成了,但如果你自己添加表,你需要设置它们。
此外:
@interface NotificationsListTVController : UIViewController <UITableViewDelegate, UITableViewDataSource>
答案 1 :(得分:1)
我是这样做的Interface Builder
:
TableViewController
ViewController
并向其添加ContainerView
ContainerView
并绘制从viewDidLoad
到TableViewController
embed
完成。您的TableViewController现在将显示在ViewController中。
将您需要的任何数据从ViewController传递到带有嵌入式Segue的TableViewController。
答案 2 :(得分:0)
在NotificationsListTVController.h中进行以下更改:
@interface NotificationsListTVController : UIViewController<UITableViewDataSource,UITableViewDelegate>
同样在NotificationsListTVController.m中,也不要忘记提供这两个语句。
tableView.delegate=self ;
tableView.dataSource=self;
这些是设置委托方法所必需的。初始化tableView后需要提供这两个语句。比如:
tblView = [[UITableView alloc] initWithFrame:CGRectMake(100,200,320,420) style: UITableViewStyleGrouped];
tblView.delegate = self;
tblView.dataSource = self;
[self.view addSubview:tblView];
您指的这些方法是委托方法,与其他普通方法不同,它们无法直接触发。
希望它能帮助!!!