2012-11-18 27 views
8

Tôi đã cố gắng triển khai bố cục Xem với hai vùng chứa đơn giản cạnh nhau theo cách bảng điều khiển iPad.Chế độ xem vùng chứa sử dụng các vấn đề về Bảng phân cảnh, tương tác và xem

Tôi đã đọc qua rất nhiều ví dụ và tất nhiên tham chiếu Apple View Controller cho bộ điều khiển xem và nói chung nhưng tôi có một vấn đề kỳ lạ nhất mà hy vọng có một lời giải thích đơn giản.

Tôi đã thêm hai khung nhìn cùng nhau, mỗi hộp chứa một bộ điều khiển chế độ xem có màu nền khác nhau, một Nút xoay vòng và nhãn. Và với mục đích thử nghiệm, tôi cũng đã thêm một nút Round Rect vào "mainViewController".

Vì vậy, khá thẳng về phía trước và đơn giản. Mỗi chế độ xem được tải trong chế độ xem vùng chứa, tuy nhiên tôi không thể tương tác với bất kỳ nút nào (khi nút được nhấp, NOTHING xảy ra, không đánh dấu màu xanh, vì vậy không phải là câu hỏi ủy nhiệm hoặc bất kỳ hành động nào từ các nút được nhận hay không vì không có gì giống như được thực hiện). Tuy nhiên bấm vào nút tôi đã đặt trong "mainViewController" giữ hai container, hoạt động hoàn hảo (nhấp nháy màu xanh như mọi khi). Một điều kỳ lạ nữa là màu nền không được hiển thị trên khung nhìn container? Chỉ các nút và nhãn. Chương trình

như sau:

Files: ViewController.h và .m (là "mainViewController") sidebarViewController.h và .m (không có gì thay đổi trong những tập tin này, UIViewController) resultsViewController.h và .m (không có gì thay đổi trong các tệp này, UIViewController) AppDelegate.h và .m (không thay đổi) Bảng phân cảnh

ViewController.h, các cửa hàng được tạo và kết nối với từng vùng chứa trong Bảng phân cảnh.

#import <UIKit/UIKit.h> 
#import "sidebarViewController.h" 
#import "resultsViewController.h" 

@interface ViewController : UIViewController 

@property (nonatomic, weak) IBOutlet UIView *sidebarView; 
@property (nonatomic, weak) IBOutlet UIView *resultsView; 


@end 

Định danh bảng phân cảnh được đặt thành cả hai thanh bênBộ điều khiển và Resultsviewcontroller trong bảng phân cảnh.

ViewController.m, tất cả mọi thứ được thực hiện bởi các cuốn sách (hoặc có lẽ không, nhưng những gì ít nhất nó có vẻ như với tôi)

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize sidebarView,resultsView; 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

UIStoryboard *storyboard = self.storyboard; 
sidebarViewController *sideVC = [storyboard instantiateViewControllerWithIdentifier:@"SidebarViewController"]; 
resultsViewController *resultsVC = [storyboard instantiateViewControllerWithIdentifier:@"ResultsViewController"]; 

//sidebarViewController *sideVC = [[sidebarViewController alloc]init]; 
//rresultsViewController *resultsVC = [[resultsViewController alloc]init]; 
[self addChildViewController:sideVC]; 
sideVC.view.frame = self.sidebarView.frame; 
[self.sidebarView addSubview:sideVC.view]; 
self.sidebarView.userInteractionEnabled = YES; 
[sideVC didMoveToParentViewController:self]; 

[self addChildViewController:resultsVC]; 
resultsVC.view.frame = self.resultsView.frame; 
[self.resultsView addSubview:resultsVC.view]; 
self.resultsView.userInteractionEnabled = YES; 
[resultsVC didMoveToParentViewController:self]; 

} 

(i đã self.xxxxView là tốt, và cũng có Câu lệnh addChildViewController đầu tiên theo thứ tự)

Ok vì vậy nghi ngờ của tôi dĩ nhiên là nó có liên quan đến phân cấp khung nhìn, khung nhìn ar "phía sau" chế độ xem rootViewController và chỉ hiển thị không thể nhấp được. Điều gì (nếu một cái gì đó) cần phải được thực hiện trong các đại biểu App để có được điều này để làm việc? Hay tôi đã làm điều gì khác sai trong mã này?

Chỉnh sửa: Tìm ra manh mối khác về điều gì có thể sai: Khi tôi tắt "Bố cục tự động" cho bảng phân cảnh các chế độ xem hiển thị và hoạt động (!) Nhưng hoàn toàn bị méo, nhưng bây giờ ít nhất tôi có màu nền chính xác và các nút đang hoạt động. Bất kỳ ai biết cách sửa lỗi này mà không tắt bố cục tự động? kể từ khi tôi đoán tôi phải làm tất cả các bố trí của tôi programatically sau đó? :(

Rất cám ơn,

Trả lời

2

Tất cả những gì mã bạn có là không cần thiết, và có lẽ là những gì đang gây ra vấn đề của mình. Khi bạn thêm quan điểm container của bạn trong IB, nó sẽ tự động tạo ra những bộ điều khiển xem được nhúng cho bạn (và Thay đổi kích thước chúng là kích thước của khung nhìn container) Bạn có nhận được những thứ đó không? Tất cả những gì bạn cần làm là thay đổi các lớp của chúng thành các lớp của các bộ điều khiển xem lớp con của bạn.Nếu bạn cần truy cập các bộ điều khiển này từ bộ điều khiển xem "chính", bạn có thể lấy một tham chiếu đến chúng từ thuộc tính childViewControllers.

+0

Cảm ơn bạn đã trả lời nhanh chóng. Có tôi nhận được những người, và những người đang tất nhiên làm việc ra khỏi hộp, vấn đề là tôi muốn chuyển đổi những quan điểm programatically (để điều khiển khác có bộ điều khiển con mới). Tôi chưa nhìn thấy một cách để thay đổi "nhúng Seques" vì vậy tôi có thể nhúng bộ điều khiển khác nhau theo yêu cầu, nếu đây không phải là con của bộ điều khiển nhúng? –

+0

@AndreasKlintberg, là sideBarViewController và resultsViewController 2 bộ điều khiển bạn nhận được tự động trong IB, hoặc là những cái bạn đang cố gắng chuyển sang? – rdelmar

+0

Không có đây là những cái mới tôi tạo ra, vì tôi không muốn sử dụng phân đoạn nhúng (vì chúng không thể được xử lý theo chương trình, hoặc ít nhất tôi chưa tìm thấy một tham chiếu đến điều đó chưa?) –

Các vấn đề liên quan