2010-09-16 48 views
10

Tôi muốn làm một cái gì đó tương tự như UIAlertView, tức là - mà không tham chiếu đến bất kỳ UIView hoặc UIViewController, trình bày một UIViewController trên đầu trang của tất cả các cửa sổ bằng cách sử dụng presentModalViewController.[UIAlertView show] hoạt động như thế nào?

Nhìn vào tài liệu tôi không thể tìm thấy cách thức có thể thực hiện điều này!

Trong OS4, có cái gì đó như thế này:

UIWindow *window = [UIApplication sharedApplication].keyWindow 
UIViewController *rootViewController = window.rootViewController 

... nhưng điều này là không thể trong OS3.

Có ai biết cách đạt được hiệu quả tương tự trong OS3 không?

Cảm ơn!


OK - vì vậy tôi đã giải quyết vấn đề này với vô số gọi lại đại biểu cho chính ViewController! Mặc dù đó là cách thích hợp để đạt được điều này, nó dường như là loại kỳ quặc mà không thể thực hiện ở bất kỳ giai đoạn nào trong việc thực thi có được một xử lý cho View Controller trên cùng cho các cảnh báo (vd).

Nếu có ai biết cách đạt được điều này, tôi vẫn thực sự quan tâm!

Trả lời

19

UIAlertView tạo riêng UIWindow phía trên cửa sổ chính của ứng dụng, makeKeyAndVisible -s và tạo hoạt ảnh theo chế độ xem riêng trong cửa sổ đó.

+0

Ahh - mở mắt! Cảm ơn vì điều này! Nick –

+2

Điều gì sẽ giữ lại trường hợp UIWindow? Khi tôi tạo một thể hiện của UIWindow nhưng không giữ lại nó như là một biến cá thể/thuộc tính nó không bao giờ xuất hiện và dường như cũng bị loại bỏ khỏi mảng '[[UIApplication sharedApplication] windows]' array. Tui bỏ lỡ điều gì vậy? –

+0

Ok như vậy trong một nỗ lực để tạo ra một lớp phủ hoạt động tương tự như UIAlertView, tôi làm cho lớp con UIWindow của tôi có hiệu quả giữ lại chính nó bằng cách tạo ra một chu kỳ giữ lại. Tôi đang gán 'self' cho một tài sản mạnh, sau đó trong phương thức bỏ qua của tôi, tôi đặt thuộc tính đó là không. Dường như làm việc, đây có phải là một ý tưởng tồi không? Tôi giả định UIAlertView làm một cái gì đó tương tự. –

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