2013-10-15 55 views
0

我是相當新的本機應用程序開發的TableView - 我已經建立了包含一個UITableViewController顯示消息的應用程序 - 一切工作正常 - 但造型的原因,我需要改變它從一個TableViewController到嵌入的ViewController內的tableview。的Xcode /的ObjectiveC - 轉換的UITableViewController到嵌入在一個UIViewController

我已經包含表視圖和相關聯的定製單元/域視圖控制器和相關的頭文件改爲 -

@interface NotificationsListTVController : UIViewController 

但我的表的方法不再是火,我不知道如何實例化它們?

(代碼如下) 的#pragma馬克 - 表視圖的數據源

- (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

確保你已經設置了tableview的委託和數據源。 –

+0

查看重複:http://stackoverflow.com/questions/9375903/how-to-interact-with-uitableview-in-uiviewcontroller – petert

回答

2

你是你的tableview的委託和數據源設置爲你的課嗎?

喜歡的東西:

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

當您創建一個UITableViewController,這是爲你做,但如果你添加表自己,你需要把它們設置。

另外:

@interface NotificationsListTVController : UIViewController <UITableViewDelegate, UITableViewDataSource> 
1

我做這種方式在Interface Builder

  • 讓您TableViewController
  • 讓您ViewController並添加ContainerView
  • 刪除segued內嵌視圖控制器隨之而來
  • 選擇ContainerView和借鑑viewDidLoad連接到您的TableViewController
  • 你會得到只有一次選擇:embed

完成。你TableViewController現在讓您的ViewController中顯示。

通行證的任何數據,你需要從視圖控制器着與嵌入式Segue公司的TableViewController。

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]; 

您所指的這些方法是不能像其他普通方法那樣直接觸發的委託方法。

希望它有助於!

相關問題