Tôi có khá cơ bản MainWindow.xib
với thanh bên kiểu danh sách nguồn. Tôi đã tạo bằng cách kéo mẫu Danh sách nguồn vào cửa sổ, đã chứa hai số NSTableCellView
s: HeaderCell
và DataCell
.NSTableCellViews phải được đặt ra như thế nào?
Loại thứ hai bao gồm biểu tượng (sử dụng NSImageView
) và nhãn (NSTextField
). Thay vào đó, tôi muốn nhãn và nhãn khác, nhãn nhỏ hơn bên dưới. Trong IB, điều này có vẻ như sau:
Nếu tôi chỉ tập trung vào DataCell
, nó nổi bật phù hợp:
Thing là, thực sự chạy chương trình, nó trông không có gì giống như mẫu:
Lưu ý cách hai số NSTextField
chỉ bị đập vào nhau. Sự hiểu biết của tôi là NSOutlineView
s (và xem dựa trên NSTableView
s, cho rằng vấn đề) có nghĩa vụ phải được thiết kế như là một mẫu từ bên trong IB. Thay vào đó, các kích thước từ mẫu có vẻ hầu như bị bỏ qua.
Dưới đây là đoạn code mà bộ giá trị của cái nhìn từ các nguồn dữ liệu:
public class TourSourceListDelegate : NSOutlineViewDelegate
{
public override bool IsGroupItem(NSOutlineView outlineView, MonoMac.Foundation.NSObject item)
{
return (item as TourSourceListDataSource.Item).IsHeader;
}
public override NSView GetView(NSOutlineView outlineView, NSTableColumn tableColumn, MonoMac.Foundation.NSObject item)
{
if (IsGroupItem(outlineView, item))
{
return outlineView.MakeView("HeaderCell", this);
}
else
{
var data = item as TourSourceListDataSource.Item;
var dataView = outlineView.MakeView("DataCell", this);
(dataView.Subviews[0] as NSTextField).StringValue = data.Name;
(dataView.Subviews[1] as NSTextField).StringValue = data.Date_start.ToShortDateString();
return dataView;
}
}
}
Tôi đã thử trọng GetRowHeight
, nhưng điều đó dường như không giải quyết vấn đề (nó làm cho căn phòng hơn, nhưng vẫn không cho phép các chế độ xem phân phối chính xác), cũng như không cần thiết.
Tôi cũng đã cố gắng chơi với các số khác nhau: Autosizing
, Autoresizes Subviews
, v.v. chuyển đổi thành IB, nhưng điều đó dường như không tạo ra kết quả trực quan, và một lần nữa, dường như không cần thiết. chính xác là những gì tôi muốn, chỉ với các nhãn hơi dài hơn trong thực tế.
Tôi chưa thử chuyển đổi cài đặt này thành AutoLayout.
Tôi đang thiếu bước hiển thị nào?
Một số thông tin khác có thể không tạo sự khác biệt: đây là dự án Xamarin.Mac/MonoMac với Xcode 5.0, MacOSX10.8.sdk, Xamarin Studio 4.0.12, Xamarin.Mac 4.0.12 và Mono 3.2.3 (nhắm mục tiêu Mono/.NET 4.0). Tôi cũng đã bật ứng dụng Sandboxing.