0

我对这个 Native App 开发人员相当陌生 - 我已经构建了一个包含 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;

    }


 }
4

3 回答 3

2

您是否将 tableview 的委托和数据源设置为您的班级?

就像是:

self.myTableView.delegate = self;
self.myTableView.dataSource = self;

当您创建 UITableViewController 时,这已为您完成,但如果您自己添加表格,则需要设置它们。

还:

@interface NotificationsListTVController : UIViewController <UITableViewDelegate, UITableViewDataSource>
于 2013-10-15T10:14:15.523 回答
1

我这样做是在Interface Builder

  • 做你的TableViewController
  • 制作ViewController并添加ContainerView一个
  • 删除自带的segued嵌入式ViewController
  • 选择ContainerView并绘制viewDidLoad与您的连接TableViewController
  • 你只会得到一次选项:embed

完毕。您的 TableViewController 现在将显示在您的 ViewController 中。

将您需要的任何数据从 ViewController 传递到具有嵌入式 Segue 的 TableViewController。

于 2013-10-15T10:20:03.447 回答
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];

您所指的这些方法是委托方法,与其他普通方法不同,不能直接触发。

希望能帮助到你!!!

于 2013-10-15T10:41:32.603 回答