Nếu ứng dụng của bạn sẽ hỗ trợ Lion, thì loadNibNamed:owner:topLevelObjects:
sẽ không kích hoạt và bạn sẽ nhận được ngoại lệ (bộ chọn không được nhận dạng) khi chạy trên Lion. Sau khi một số tìm kiếm xung quanh tôi đến với điều này:
// loadNibNamed:owner:topLevelObjects was introduced in 10.8 (Mountain Lion).
// In order to support Lion and Mountain Lion +, we need to see which OS we're
// on. We do this by testing to see if [NSBundle mainBundle] responds to
// loadNibNamed:owner:topLevelObjects: ... If so, the app is running on at least
// Mountain Lion... If not, then the app is running on Lion so we fall back to the
// the older loadNibNamed:owner: method. If your app does not support Lion, then
// you can go with strictly the newer one and not deal with the if/else conditional.
if ([[NSBundle mainBundle] respondsToSelector:@selector(loadNibNamed:owner:topLevelObjects:)]) {
// We're running on Mountain Lion or higher
[[NSBundle mainBundle] loadNibNamed:@"NibName"
owner:self
topLevelObjects:nil];
} else {
// We're running on Lion
[NSBundle loadNibNamed:@"NibName"
owner:self];
}
Nếu bạn thực sự muốn sử dụng topLevelObjects:&array
cho Mountain Lion +, và bạn cũng muốn hỗ trợ Lion, có vẻ như bạn sẽ cần phải rơi trở lại trên loadNibFile: externalNameTable : withZone: (có sẵn như là cả một lớp và phương pháp dụ) cho điều kiện Lion (tôi có thể sai về điều này). Tôi nhận được ấn tượng rằng loadNibNamed:owner:topLevelObjects:
đã được tạo để thay thế điều này.
Tôi cũng đã đọc ở nơi khác rằng khi sử dụng loadNibNamed:owner:topLevelObjects:
mới hơn cho trang tính bạn nên bỏ chọn "Phát hành khi đóng" cho trang tính (cửa sổ). Điều này nên được giải quyết khi bạn đóng tờ:
[self.sheet close];
self.sheet = nil;
Tôi không chắc chắn chính xác nên làm gì về hộp kiểm đó nếu bạn đang mở cửa sổ không theo phương thức. Bất kỳ ý tưởng?
Nguồn
2013-12-30 17:57:37
Cân nhắc chia phần trang tính tùy chỉnh thành câu hỏi riêng của riêng nó: Cách tốt nhất để triển khai bảng tùy chỉnh là gì? sẽ là một danh hiệu tốt. – alfwatt