2012-02-22 14 views
8

Tôi đã nghiên cứu rất nhiều trên UISplitView và không thể tìm cách điều khiển Chế độ xem Chia tách khi Chế độ xem chính và Chi tiết có chế độ xem thay đổi.Đại biểu UISplitViewController trong một singleton

Sau đó, tôi tìm thấy một cách để quản lý nó với một lớp đơn là đại biểu.

Vấn đề của tôi là tôi không chắc đó có phải là cách đi đúng không. Tôi quan tâm đến số reusabilitymemory managment. Ngoài ra tôi có một cảm giác rằng nó đã làm sáng tỏ các hướng dẫn của Apple để làm cho các đại biểu trong những người độc thân.

Đây là những gì tôi có (và nó thực sự làm việc):

// SharedSplitViewDelegate.h 

/* In the detail view controllers: 

// in the initial detail view controller 
- (void)awakeFromNib 
{ 
[super awakeFromNib]; 
// needs to be here, otherwise if it's booted in portrait the button is not set 
self.splitViewController.delegate = [SharedSplitViewDelegate initSharedSplitViewDelegate]; 
} 

// shared between all detail view controllers 
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
SharedSplitViewDelegate *rotationHandler = [SharedSplitViewDelegate initSharedSplitViewDelegate]; 
[self.toolbar setItems:[rotationHandler processButtonArray:self.toolbar.items] animated:YES]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
return YES; 
} 

*/ 

#import <Foundation/Foundation.h> 
#import <UIKit/UIKit.h> 

@interface SharedSplitViewDelegate : NSObject <UISplitViewControllerDelegate> 

+ (id)initSharedSplitViewDelegate; // returns the singleton class instance 

- (NSArray *)processButtonArray:(NSArray *)array; // Adds and removes the button from the toolbar array. Returns the modified array. 

@end 

Bây giờ thực hiện:

Mã này là miễn phí để sử dụng và sửa đổi cho tất cả mọi người sẽ tìm thấy nó hữu hiệu trong dự án của họ :).

Tôi mới sử dụng StackOverflow (mặc dù tôi đã ẩn nấp trong một vài tháng mà không có tài khoản) vì vậy mọi phê bình đều được chào đón nồng nhiệt.

Trả lời

2

IMHO, mỗi mẫu thiết kế, kiến ​​trúc, là 'tốt' nếu nó phù hợp với những 'vấn đề' bạn phải giải quyết (và phù hợp với sở thích cá nhân của bạn cho tổ chức mã)

  • vấn đề của bạn là gì?
  • Tại sao bạn cần đối tượng này?
  • Đây có phải là singleton UISplitViewDelegateUIApplicationDelegate của bạn không? (Giữ nó đơn giản ;-)

thảo luận thêm =>

Nếu bạn UIApplicationDelegate là một mớ hỗn độn, hơn là tạo sub-object, một chương trình Tôi đã sử dụng gần đây tại những tổ chức mã của tôi: hạng mục sử dụng và mở rộng lớp

Ví dụ:

Nếu lớp ViewController tôi xử lý các nhiệm vụ phức tạp mà c ode có thể được phân tách theo nhóm.
giả:

  • âm thanh
  • dữ liệu cốt lõi
  • nhận biết vị trí,

tôi tạo ra một danh mục cho từng các

  • UIViewController+soundManager
  • UIViewController+dataProvider
  • UIViewController+locationManager.

(trong cùng một tập tin với một số @ interface @implementation, hoặc trong các tập tin khác nhau => tôi sử dụng nhiều file)

Sau đó, cùng với mỗi loại tôi viết một đẳng cấp mở rộng cho các thuộc tính này đặc biệt loại nhu cầu.

0

Lần cuối tôi giải quyết vấn đề này bằng cách phân lớp số UISplitViewController và sử dụng làm đại biểu riêng của mình.