5

Tôi đã tạo một vài cảnh trong tệp bảng phân cảnh trong dự án Xcode của mình và cảnh đầu tiên được tải là đăng nhập người dùng trên màn hình. Khi người dùng đăng nhập vào UIButton "Đăng nhập" đưa người dùng đến màn hình chào mừng. Tôi thiết lập điều đó trong bảng phân cảnh bằng cách sử dụng phân đoạn phương thức. Tôi muốn một người dùng có tên "admin" được đưa lên màn hình quản trị chào mừng. Tôi khá chắc chắn nó chỉ có thể có một segue liên kết với một đối tượng, tức là UIButton trong storyboard, vì vậy tôi stumped như thế nào tôi có thể thực hiện đăng nhập để đưa admin vào màn hình chào admin, và đưa tất cả người dùng khác màn hình chào mừng của người dùng. Tôi thực sự không muốn tạo hai nút đăng nhập riêng biệt, vì vậy đó không phải là một tùy chọn.Một UIButton hai cảnh chỉ có một khoảng cách, mã có điều kiện cần

Tôi đã xem một số bài đăng trên stackoverflow với các câu hỏi tương tự nhưng tất cả các câu trả lời dường như hơi phức tạp. Hãy ghi nhớ tôi mới đến Xcode, vì vậy nếu bạn dán mã trong câu trả lời của bạn xin vui lòng chỉ định tập tin mã nên đi vào (mà có thể giúp tôi ra A LOT). Tôi sẽ đăng một hình ảnh về những gì bảng phân cảnh của tôi trông như thế cho đến nay để giúp chứng minh một sơ đồ trực quan về những gì tôi đang nói đến.

enter image description here

Trả lời

6

Nếu tôi hiểu câu hỏi của bạn một cách chính xác, sau đây là các bước bạn cần phải thực hiện để làm cho nó làm việc:

  1. Từ WelcomeViewController - nơi bạn có nút đăng nhập tên người dùng/mật khẩu, kiểm soát + kéo từ UIViewController đến WelcomeScreen và chọn Modal từ menu bật lên (Bằng cách kéo từ UIViewController Ý tôi là, chọn UIViewController trong bảng phân cảnh, có biểu tượng hình tròn ở dưới cùng, từ đó đến trình điều khiển chế độ xem đích). Đặt tên mã nhận dạng segue là "UserSegue"

  2. Lặp lại bước 1, nhưng thay vào đó hãy điều khiển + kéo màn hình đến màn hình Admin.Đặt tên định danh segue là "AdminSegue"

  3. Bạn cần bây giờ phải phân lớp WelcomeViewController,

  4. Thực hiện -(IBAction)login:(id)sender

    - (IBAction)login:(id)sender { 
    
        // assuming you have hooked up the user name text field 
    
        if ([self.usernameTextField.text isEqualToString:@"admin"]) { 
         [self performSegueWithIdentifier:@"AdminSegue" sender:sender]; 
        } 
        else { 
         [self performSegueWithIdentifier:@"UserSegue" sender:sender]; 
        } 
    } 
    
  5. Trong kịch bản, treo lên nút đăng nhập để phương pháp này ở bước 4.

+0

cảm ơn bạn rất nhiều vì phản ứng kịp thời, đó là giải pháp mà tôi đang tìm kiếm. – Chris

1

Đúng vậy - bạn chỉ có thể có một segue đi từ một nút (hoặc điều khiển khác).

Tuy nhiên, bạn có thể có bất kỳ số lượng khoảng cách đi nào từ bộ điều khiển chế độ xem. Không giống như các nút được gắn với một nút (hoặc điều khiển khác), các phân đoạn từ một bộ điều khiển khung nhìn không được gọi tự động khi điều khiển được khai thác - bạn phải làm điều đó bằng mã, nhưng thực hiện nó trong mã cho bạn sự linh hoạt để thực hiện nó theo với bất kỳ điều kiện nào bạn cần.

Để tạo sự khác biệt từ bộ điều khiển chế độ xem, hãy kéo điều khiển từ biểu tượng trình điều khiển chế độ xem bên dưới chế độ xem của nó (vòng tròn màu cam) trong IB hoặc từ mục nhập trong đường viền cảnh. Sau khi tạo phân đoạn, hãy đặt mã nhận dạng duy nhất (ví dụ: "mySegue").

Sau đó, tạo phương thức hành động được kết nối với nút của bạn. Trong thực hiện phương pháp đó (có lẽ là trong bộ điều khiển xem có chứa nút), hãy kiểm tra bất kỳ điều kiện nào bạn cần, và gọi [self performSegueWithIdentifier:@"mySegue"] để thực hiện phân đoạn.

Có thêm lời giải thích trong số answer to a similar question của tôi, nếu điều đó có ích.