2012-10-08 22 views
8

Tôi gặp vấn đề này, tuy nhiên không có thông tin nào tôi có thể tìm thấy trên diễn đàn này hoặc internet nói chung có thể giúp tôi.Cửa sổ ứng dụng được mong đợi có bộ điều khiển xem gốc vào cuối lần khởi chạy ứng dụng - ngay cả với tất cả các sự cố đã biết cố định

Dường như có hai nơi mà lỗi này có thể xảy ra:

  1. main.m - chức năng của tôi trông như thế này:
int main(int argc, char *argv[]) 
    { 
     @autoreleasepool { 
      return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
     } 
    } 

Đối số cuối cùng trong UIApplicationMain trả về một giá trị NSString của lớp học của tôi AppDelegate. Điều này là do đó làm việc tốt.

2.AppDelegate.m - có một cách "cũ" thiết lập bộ điều khiển xem gốc đó là như thế này:

[self.window addSubview:rootViewController]; 

Tuy nhiên, trong ứng dụng của tôi nó đã được cập nhật thành:

self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 

Vì vậy, không có thông tin hiện tại nào trên internet hoạt động. Nó hơi khó hiểu hơn khi đồng nghiệp của tôi có thể làm cho nó hoạt động trên máy tính của anh ấy hoàn toàn ổn - anh ấy là người gửi cho tôi mã nguồn ứng dụng để tất cả các cài đặt và mã phải giống hệt nhau.

Tôi đang cố gắng khởi chạy tính năng này trong trình mô phỏng. Nó được xây dựng dựa trên iOS 5, nhưng tôi đang cố chạy nó trên trình mô phỏng iOS 6.0.

Tôi có mã XCode mới nhất (4.5.1).

Có lý do nào điều này sẽ xảy ra không? Và làm thế nào tôi có thể khắc phục nó?

Rất cám ơn

Tom

+0

giá trị nhân bản: http://stackoverflow.com/q/7520971/9530 http://stackoverflow.com/q/8706828/9530 http://stackoverflow.com/q/8190567/9530 http://stackoverflow.com/q/11515818/9530 http://stackoverflow.com/q/9844626/9530 và có thể nhiều hơn –

Trả lời

17

Tôi chạy chính xác cùng một điều cố gắng thêm UITableView vào ứng dụng xem một lần. Thay vào đó, tạo một dự án ứng dụng Master-Detail mặc định (File-> New-> mục tiêu -> ...) và xem thi của appdelegate của didFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 

MDMasterViewController *masterViewController = [[MDMasterViewController alloc] initWithNibName:@"MDMasterViewController" bundle:nil]; 
self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController]; 
self.window.rootViewController = self.navigationController; 
[self.window makeKeyAndVisible]; 
return YES; 
} 

Thay vì trực tiếp thiết lập bộ điều khiển xem của bạn khi rootViewController của cửa sổ , bạn cần tạo một bộ điều khiển điều hướng được khởi tạo với bộ điều khiển xem của bạn cho initWithRootViewController, sau đó thiết lập bộ điều khiển nav đó là rootViewController của cửa sổ. (Chú ý bạn cũng phải vứt bỏ bộ điều khiển nav đó trong một thuộc tính để nó không bị phá hủy).

0

Làm như sau thêm một breakpoint ngoại lệ trên mã của bạn ít nhất là để xem nếu bạn có thể tìm ra vấn đề là gì. Sử dụng hướng dẫn this nếu bạn không biết cách thực hiện. Ngoài ra, có cảnh báo nào khi bạn biên dịch không? Ngay cả khi nó cho phép bạn biên dịch, đôi khi cảnh báo có thể tiết lộ lý do ứng dụng của bạn bị lỗi.

+0

Đây không thực sự là câu trả lời. Tôi không thể thiết lập các điểm ngắt vì lỗi xảy ra ngay khi ứng dụng ': didFinishLaunchingWithOptions' trả về' YES/NO' do đó không có nơi cụ thể nào mà ứng dụng gặp sự cố. Nó không phải là một vụ tai nạn, hoặc, tôi không thể backtrace trong GDB. Ứng dụng dường như đang chạy nhưng không có gì xuất hiện trên màn hình trong trình mô phỏng. –

+0

Tôi chỉ cần ném 2 xu của tôi. Xin lỗi nếu tôi không thể giúp bạn. – Peres

+0

Cảm ơn bạn đã nhập. :) –

3

Cố gắng xác định bộ điều khiển giao diện mặc định trong menu dự án của bạn,

chọn dự án của bạn => Tóm tắt => Giao diện chính => Gõ điều khiển giao diện chính của bạn

mỗi khi tôi bắt đầu dự án mới tôi phải đối mặt với cùng một lỗi như bạn, làm điều này mỗi lần giải quyết, hy vọng điều này sẽ giúp bạn.

+1

Bây giờ là Dự án> Chung> Thông tin triển khai> Giao diện chính –

6

Chỉ cần thay đổi này:

[window addSubview:tabBarController.view]; 

này:

[window setRootViewController:tabBarController]; 

Hoặc bất cứ điều gì là trong addSubview:

+0

Đây là bản sửa lỗi cho tôi. –

+0

phải được đánh dấu là câu trả lời đúng – Sandeep