2017-03-23 26 views
0

我想根據模型中的變量將不同的nibs加載到單個UITableView中。我似乎有一些看起來合乎邏輯並且不會崩潰的東西,但是,只有1個xib正在被加載和顯示。Xamarin.iOS - 單個UITableView中的多個XIBs

控制器的方法:

private void populateTableData() 
    { 
     liveTipsTableView.RegisterNibForCellReuse(UINib.FromName("LiveTipCell_", null), "LiveTipCell_"); 
     liveTipsTableView.RegisterNibForCellReuse(UINib.FromName("NewsCell_", null), "NewsCell_"); 

     setListViewSource(); 
     Refresh(); 
     AddRefreshControl(); 
     Add(liveTipsTableView); 
     liveTipsTableView.Add(RefreshControl); 
    } 

TableSource方法

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) 
    { 
     var localTip = _tips[indexPath.Row]; 

     if (localTip.NewsItem) 
     { 
      CellIdentifier = new NSString("NewsCell_"); 
      NewsCell_ cell = new NewsCell_(); 
      cell = tableView.DequeueReusableCell("NewsCell_") as NewsCell_; 
      var views = NSBundle.MainBundle.LoadNib("NewsCell_", cell, null); 
      cell = ObjCRuntime.Runtime.GetNSObject(views.ValueAt(0)) as NewsCell_; 
      cell.SelectionStyle = UITableViewCellSelectionStyle.None; 
      cell.BindDataToCell(localTip); 
      return cell; 
     } 
     else 
     { 
      CellIdentifier = new NSString("LiveTipCell_"); 
      LiveTipCell_ cell = new LiveTipCell_(); 
      cell = tableView.DequeueReusableCell("LiveTipCell_") as LiveTipCell_; 
      var views = NSBundle.MainBundle.LoadNib("LiveTipCell_", cell, null); 
      cell = ObjCRuntime.Runtime.GetNSObject(views.ValueAt(0)) as LiveTipCell_; 
      cell.SelectionStyle = UITableViewCellSelectionStyle.None; 
      cell.BindDataToCell(localTip); 
      return cell; 
     } 
    } 

我有2個獨立的XIB文件,他們有自己的班,其工作來填充的意見。它們似乎都在調試時使用,這只是表視圖的一種情況,只顯示其中的一項。

在此先感謝,如果您需要更多信息以瞭解發生了什麼,請告訴我。

回答

0

這是在目標C中,但它不應該太難轉換。

SO Post on a different question

+0

Thanks @ Digitalsa1nt。我已閱讀了這篇文章,但看不出和我已經實施的很多不同。我不是iOS專家,所以不確定是否有什麼我在這裏忽略。 –

+0

嗯有趣。好,只是爲了確認你已經爲兩個筆尖適當地設置了「標識符」? – Digitalsa1nt

+0

是的,似乎都被正確命名,並且都有獨特的名稱。這很奇怪,因爲如果是這樣的話,它通常會彈出一個構建錯誤,所以我不認爲是這樣。就好像其中一個視圖隱藏或不可見,即逐行調試顯示每行代碼都正確運行並且不會被切除? –

相關問題