2011-10-25 4 views
18

Tôi đang gặp khó khăn để đạt được những điều sau đây sử dụng một kịch bản:iOS 5 kịch bản, lập trình xác định con đường

Khi cài đặt không được thực hiện: ứng dụng chạy -> chương trình thiết lập xem điều khiển -> hiển thị chính điều khiển chuyển hướng Khi thiết lập được thực hiện: chạy ứng dụng -> hiển thị bộ điều khiển điều hướng chính

Về cơ bản, tôi muốn ứng dụng bắt đầu theo chương trình với chế độ xem cài đặt trong một số trường hợp nhất định và bỏ qua ngay trước bộ điều khiển điều hướng chính.

Tôi đã quản lý hiển thị chế độ xem cài đặt với phân cách kiểu phương thức từ trình điều khiển điều hướng chính, nhưng tôi không biết cách hiển thị nó trước trình điều khiển điều hướng chính được hiển thị. Bất kỳ ý tưởng?

Trả lời

20

tôi cố gắng làm điều đó một chút khác nhau:

  1. Sử dụng một UINavigationController như bộ điều khiển xem ban đầu.
  2. Tạo bộ điều khiển chế độ xem gốc sẽ quản lý quyết định tải nội dung gì.
  3. Tạo phân đoạn bảng phân cảnh từ bộ điều khiển chế độ xem gốc sang chế độ xem chính và chế độ xem cài đặt và cung cấp các định danh phân biệt phù hợp.
  4. Gọi số performSegueWithIdentifier bằng số nhận dạng thích hợp từ bộ điều khiển chế độ xem gốc của bạn.

Một giải pháp khác, hy vọng điều này sẽ hữu ích.

+0

đây là cách tốt hơn và dễ dàng hơn để giải quyết vấn đề tôi cảm thấy – carbonr

+0

Đồng ý, điều này có vẻ như một giải pháp tốt hơn. Tôi đã thay đổi câu trả lời được chấp nhận. –

+1

Tôi không nghĩ rằng điều này sẽ làm việc nếu bạn đang sử dụng bộ điều khiển chế độ xem chia tách trong ứng dụng của bạn - trình điều khiển chế độ xem tách cần phải là gốc ban đầu. – radven

29

Theo mặc định, bộ điều khiển chế độ xem ban đầu từ bảng phân cảnh chính của bạn được khởi tạo và hiển thị tự động khi ứng dụng của bạn khởi động. Để ngăn chặn điều này xảy ra, bạn cần phải xóa cài đặt UIMainStoryboardFile khỏi tệp info.plist của mình.

Không có trình điều khiển chế độ xem mặc định, giờ đây bạn có thể tự do tạo một chương trình khi khởi động ứng dụng. Xem UIStoryboard documentation. Sử dụng +storyboardWithName:bundle: để tải bảng phân cảnh và sau đó sử dụng –instantiateViewControllerWithIdentifier: để tạo bộ điều khiển chế độ xem chính xác. Bạn cũng sẽ cần tạo một UIWindow chính và thêm khung nhìn của trình điều khiển khung nhìn vào nó giống như bạn đã từng làm với giao diện người dùng dựa trên .nib. Lưu ý rằng không có cài đặt UIMainStoryboardFile, cửa sổ chính không được tạo cho bạn - hãy đọc explanation.

+0

Cảm ơn, hãy xóa bảng phân cảnh khỏi info.plist đã thực hiện thủ thuật! –

+0

Câu trả lời ngắn gọn, cảm ơn bạn :) – Jarrod

+0

Cách tạo 'UIWindow' chính? – Siddharth

3

Tôi đã làm một cái gì đó tương tự như amoshaviv, lời khuyên của ông là âm thanh. Tôi đã làm nó hơi khác nhau mặc dù, và tôi sẽ cung cấp cho một số thông tin thêm. Tôi đã tạo một lớp MyInitialViewController tùy chỉnh, bắt nguồn từ UIViewController và đã thực hiện điều khiển chế độ xem ban đầu này. Trong tệp bảng phân cảnh, tôi đã tạo các phân đoạn phương thức với các tên thích hợp cho tất cả (trong trường hợp của tôi ba) có thể là các bộ điều khiển xem đầu tiên 'thực'. Trong lớp MyInitialViewController, tôi thực hiện phương pháp

- (void)viewDidAppear:(BOOL)animated; 

, để lần đầu tiên thực hiện việc kiểm tra mà xem để chuyển sang, và sau đó thực hiện đúng

[self performSegueWithIdentifier:@"NameOfSegue" sender:self]; 

có hiệu quả, điều này làm cho các MyInitialViewController gì hơn một công tắc được thực hiện khi nó được đưa vào xem. Lần đầu tiên tôi đã thử làm điều này khi được nạp vì tôi không quan tâm đến việc thực sự nhìn thấy khung nhìn này, nhưng điều đó không làm việc, trong khi viewDidAppear thực hiện.

Để làm cho hình ảnh này mượt mà, tôi đã thử những điều sau đây. Trong các thuộc tính của segues, tôi đã tắt hoạt ảnh. Khung nhìn tôi để trống, và tôi đã cho nó một màu nền khớp với màu của hình ảnh khởi động.