2016-01-07 8 views
5

नहीं कहा जाता है, मैं एक टेबलव्यू पर काम कर रहा हूं जिसमें दो अनुभाग हैं। और मैं दूसरे सेक्शन हेडर में हेडर व्यू जोड़ना चाहता हूं।GetHeightForHeader और GetViewForHeader को

मैंने निम्नलिखित कोड लागू किया है। यह TitleForHeader पर कॉल करता है लेकिन दुर्भाग्य से न तो GetHeightForHeader और न ही GetViewForHeader सभी को कॉल किया जा रहा है। किसी के पास कोई सुराग है?

Table.Delegate = new TableDelegate(this); //remove this bit 
Table.Source = new TableSource<string>(list, Table); 

मैंने महसूस किया कि मैं केवल UITableViewSource का उपयोग करना चाहिए और दोनों की स्थापना नहीं:

public override string TitleForHeader (UITableView tableView, nint section) 
{ 
    if (section == 0) 
    { 
    return "Details"; 
    } 
    if (section == 1) 
    { 
    return "Settings"; 
    } 

return ""; 
} 

public override nfloat GetHeightForHeader(UITableView tableView, nint section) 
{ 
    if (section == 0) 
    { 
     return 0.0001f; 
    } 
    if (section == 1) 
    { 
     return 100.0f; 
    } 
    return UITableView.AutomaticDimension; 
} 

public override UIView GetViewForHeader(UITableView tableView, nint section) 
{ 
    if (section == 1) { 
    UIView headerView = new UIView (new CGRect (0, 0, (float)tableView.Bounds.Width, (float)tableView.SectionHeaderHeight)); 
    headerView.BackgroundColor = UIColor.Black; 
    return headerView; 
    } 
    else { 
     return null; 
    } 
} 
+0

मुझे लगता है कि TitleForHeader और ViewForHeader परस्पर अनन्य हैं में प्रतिनिधि स्थापित करने के लिए भूल गया था। TitleForHeader को हटाने का प्रयास करें। – Jason

+0

मैंने 'TitleForHeader' को हटाकर भी कोशिश की और फिर भी यह 'GetViewFoHeader' और' GetHeightForHeader' पर नहीं आया। – hotspring

उत्तर

2

मैं एक ही समस्या सिर्फ महसूस किया कि मैं तो जैसे प्रतिनिधि और स्रोत की स्थापना किया गया था।

UITableViewSource निम्नलिखित दो वर्गों, जो अभी भी Xamarin.iOS में उपलब्ध हैं, लेकिन आम तौर पर की आवश्यकता नहीं है की जगह:

UITableViewDataSource - एक ऑब्जेक्टिव-सी प्रोटोकॉल है कि एक अमूर्त वर्ग के रूप में Xamarin.iOS में मॉडलिंग कर रहा है। प्रत्येक सेल के लिए एक तालिका प्रदान करने के साथ-साथ हेडर, पाद लेखों और पंक्तियों की संख्या और तालिका में अनुभागों के बारे में जानकारी प्रदान करने के लिए उप-वर्ग होना चाहिए।

UITableViewDelegate - एक उद्देश्य-सी प्रोटोकॉल जिसे क्लास के रूप में Xamarin.iOS में मॉडलिंग किया गया है। चयन, संपादन सुविधाओं और अन्य वैकल्पिक तालिका सुविधाओं को संभालती है।

Xamarin docs

मैं बस अपना TableSource में मेरी rowselected विधि ले जाया गया है और अब यह TitleForHeader और GetViewForHeader तरीकों कॉल (वे परस्पर अनन्य नहीं हैं) और केवल स्रोत कोई प्रतिनिधि निर्धारित किया है।

0

एक ही मुद्दा था, मैं सिर्फ viewDidLoad

public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 

    TableView.DataSource = new YourViewControllerTableDataSource(); 
    TableView.Delegate = new YourViewControllerTableDelegate(); 

} 
संबंधित मुद्दे