2012-04-03 32 views
12

Có cách nào mà tôi có thể nhìn thấy một cái nhìn được nạp mà không kiểm tra mã nguồn của bộ điều khiển xem (ví dụ, viewDidLoad, viewWillAppear, vv)kiểm tra nếu xem được nạp vào thời gian chạy

hoặc làm thế nào có thể Tôi kiểm tra tại thời gian chạy/động nếu xem bất kỳ được tải để lấy các bản xem trước.

+0

ví dụ, tôi muốn chờ đợi cho đến quan điểm của tôi được nạp và sau đó có được tất cả các bản xem trước cho chế độ xem đó và bắt đầu thực hiện thử nghiệm trên chúng bằng cách sử dụng một số thứ như các bước và kịch bản KIF bằng cách có các thuộc tính và thông tin của UIViews đó. Tôi muốn đợi cho đến khi khung nhìn được tải nhưng sau đó làm thế nào tôi có thể nhận được các thuộc tính UIViews ', bởi vì tôi không muốn sử dụng nhãn trợ năng – ramo

+0

bằng cách tải tôi có nghĩa là khi chúng tôi có thể nhận được tất cả các bản xem trước của chế độ xem. Tôi cần phải có thông tin này lấy từ người khác cho phép nói tập tin thư viện và không phải trong mã nguồn dự án. – ramo

Trả lời

35

Nếu bạn có một thể hiện của một bộ điều khiển xem, bạn có thể hỏi nó:

viewController.isViewLoaded 
+0

thì tôi nên kiểm tra ở đâu và kiểm tra isViewLoaded. Vì vậy, firt applicationDidFinishLaunching được gọi và sau đó viewdidload của khung nhìn đầu tiên được gọi. nơi tôi có thể kiểm tra isViewLoaded – ramo

3

Tôi không hoàn toàn rõ ràng về ý nghĩa của "nạp". Tùy thuộc vào định nghĩa của bạn "nạp" bạn có thể:

  • Kiểm tra nếu xem là nil (định nghĩa rộng nhất của tải, mặc dù điều này sẽ phụ thuộc vào một người nào đó nilling ra quan điểm này khi nó được deallocated, kẻo bạn sẽ có được một EXC_BAD_ACCESS).

  • Kiểm tra [view superview] để xem liệu chế độ xem có giám sát hay không.

  • Kiểm tra [view window] để xem liệu một cái nhìn là một phần của một cửa sổ (một điều kiện tiên quyết cho việc "trên màn hình")

  • Giả sử có một UIViewController tương ứng, truy vấn bất động sản isViewLoaded của bộ điều khiển để xem liệu nó đã nạp một cái nhìn vào bộ nhớ. Điều này đặc biệt hữu ích với các vấn đề về vòng đời.

Có thể có các cách giải thích khác về "được tải" và những thứ khác bạn có thể kiểm tra, nhưng đây là những thứ đầu tiên trên đầu tôi.

0

Không hoàn toàn chắc chắn về trường hợp sử dụng của bạn, nhưng điều này có thể hữu ích nếu bạn chỉ muốn truy vấn phân cấp chế độ xem.

- (UIView *)viewWithTag:(NSInteger)tag 
  1. Tag tất cả các quan điểm mà bạn quan tâm, cho ex. trên một số lượt xem quan tâm nhất định; "ImportantView1", "ImportantView2", ...

  2. Bạn cần một (mẹ) nhằm thực hiện cuộc gọi API trên

  3. Cuộc gọi sẽ truy vấn (mẹ) xem và tất cả subviews .

  4. Lọc chế độ xem theo tên thẻ tùy chỉnh của bạn. (Nếu thẻ bắt đầu với "ImportantView")

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