2014-01-08 58 views
0

我在IB中添加了一個UITableViewUIViewController的內部,我已經將TableView內容設置爲「靜態單元格」,因爲這正是我想要的,並且當我沒有添加任何內容UITableView。但是,例如,如果我將第一個UITableViewCell的背景顏色更改爲黑色,則在運行應用程序時它不會顯示爲黑色。我添加了UITableViewControllerDelegateUITableViewDataSource並設置了tableView.delage = self;。但是當我運行應用程序時,我仍然沒有對tableView顯示進行更改。UITableView在UIViewController中不顯示內容

問題是什麼?

注意:我也嘗試添加tableView.dataSource = self;,但這只是使應用程序崩潰。

+0

你的問題解決了嗎?請檢查我的答案 –

回答

0

是的,你可以在UIViewController中有靜態表格視圖內容。

所有你需要做的是:

- 創建表的靜態細胞在Interface Builder和設計他們自己喜歡的方式。

- 製作所述的UIViewController實現表視圖的數據源和委託:

@interface MyViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

- 連接表視圖的界面生成器代表且dataSource到視圖控制器

- 實施-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section返回你的細胞數量。 (例如return 10,這樣做很簡單)

- 將接口生成器中的IBOutlets連接到代碼中。 重要提示:確保它們是strong,弱不起作用。例如@property (strong, nonatomic) IBOutlet UITableViewCell *myFirstCell;

-Implement -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath在索引路徑返回正確的單元格。例如:

int num = indexPath.row; 
UITableViewCell *cell; 
switch (num) { 
    case 0: 
     cell = self.myFirstCell; 
     break; 
    case 1: 
     cell = self.mySecondCell; 
     break; 
} 
return cell; 

如果您應用所有這些步驟,您應該有工作的靜態單元格適用於單元格不多的表格。完美的桌子,你有幾個(可能不超過10-20就足夠了)的內容。幾天前我跑了同樣的問題,我確認它的工作原理。更多信息請查看此處:Best approach to add Static-TableView-Cells to a UIViewcontroller?

+0

你確定我可以在UIViewController中使用靜態內容嗎? @Gavin說你只能在UITableViewController中使用靜態內容。 – Peter

+0

我建議你複製粘貼代碼和測試..上面的代碼爲我工作,所以必須是正確的。 –

0

您將要使用UITableViewController,不與UITableView一個UIViewController添加到它,因爲你只應該使用靜態細胞與UITableViewController。有可能的方法來解決它,所以你可以讓靜態單元格工作,但它只是使用一個UITableViewController更簡單,你會有更少的問題來處理,尤其是如果你改變表的內容。

0

似乎你有UITableViewCell的後臺問題的問題。所以不要使用背景來檢查內容是否繪製。

您可以使用調試器爲此例如或NSLog。

注意:單元格具有可修改的內容視圖。我不記得,但似乎細胞沒有可以用顏色調整的背景屬性。

如果您嘗試了下面的這一行,例如 - 它將無法工作,顏色將以白色作爲默認顏色。

[cell setBackgroundColor:[UIColor blackColor]];

嘗試添加一些東西到單元格,例如圖片,然後你可以看到結果,因爲我認爲。

使用此代碼:

[cell.contentView setBackgroundColor:[UIColor blackColor]];在此委託

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

它會幫助你,因爲我認爲。

0

你有沒有實施協議? ... 另一件事是,當執行協議時我有一個問題,當沒有單元格顯示。 嘗試此方法的給定的方法。

-(UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSString *[email protected]"Cell"; 
    CobranzaCell *cell = [[CobranzaCell alloc]init]; 
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier 
              forIndexPath:indexPath]; 
    if (cell == nil) { 
     cell = [[CobranzaCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:CellIdentifier]; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 

    // Configure the cell... 
    return cell;   
} 
0

你不能在簡單的UIViewController子類中使用靜態單元。相反,你應該使用UITableViewController的實例。黑客在故事板中拖動UIViewController的實例到故事板畫布。然後,將Container View從對象庫拖放到您的UIViewController的視圖。默認情況下,它將創建與相關的UIViewController實例相關的嵌入segue。你想要做什麼 - 刪除這個視圖控制器,從對象庫中拖放UITableViewController的實例,然後右鍵單擊並從你的容器視圖拖動到剛剛刪除的UITableViewController。選擇嵌入。現在你的表視圖控制器獲得容器視圖的大小,你可以在其中使用靜態單元!希望它會有所幫助!

相關問題