2012-02-21 32 views
37

Sử dụng bảng phân cảnh cách thích hợp để loại bỏ một phương thức là gì?ios Storyboarding - Loại bỏ một phương thức?

  • sử dụng IBAction và viết mã để loại bỏ sau khi nhấp vào nút?
  • sử dụng segue và thông báo cho bộ điều khiển chế độ xem gốc sau khi nhấp vào nút?

Trả lời

20

Xem Dưới đây Dismissing a Presented View Controller khoảng lưng chừng xuống

Khi nói đến thời gian để sa thải một bộ điều khiển xem trình bày, phương pháp ưa thích là để cho bộ điều khiển xem trình bày bỏ qua nó.

Vì vậy, bạn nên sử dụng một IBAction và viết code để sa thải sau khi một nút bấm

+4

"Vì vậy, bạn nên sử dụng IBAction và viết mã để loại bỏ sau khi nhấp vào nút" Thực sự là sai. Những gì Apple đang nói là "bạn cần phải thông báo cho bộ điều khiển xem PARENT mà sau đó loại bỏ phương thức." –

+4

Liên kết bị hỏng ngày nay – po5i

+0

Tôi đã tạo một danh mục :) https://github.com/evanstoddard/UIViewController-Dismiss-Actions –

10

Xem câu trả lời của tôi here. Nó cung cấp cho bạn hai cách để loại bỏ bộ điều khiển xem phương thức với bảng phân cảnh. Tôi thích phương pháp hai mô tả bởi vì một trong những bạn thêm các lớp học trong dự án của bạn trở lại của bạn từ chế độ xem phương thức có thể được thực hiện với không có mã sử dụng storyboard một mình. Điều đó nói rằng, nếu bạn đã thực hiện một giao thức đại biểu và đại biểu, nó cũng là một nơi tốt để đặt tuyên bố dismissModalViewController.

9

Tôi đã tìm thấy rằng thường là khi tôi cố gắng thực hiện việc này trong bảng phân cảnh, tôi không muốn tạo thêm lớp học. Nó vẫn có ý nghĩa để thực hiện việc loại bỏ từ trình điều khiển xem trình bày, do đó yêu cầu một lớp để trả về nó.

Nếu bạn tạo IBAction trong trình điều khiển chế độ xem trình bày và đặt tên phù hợp, ví dụ:

- (IBAction)dismissAnyModel:(id)sender 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

Sau đó, từ kịch bản bất cứ nơi nào bạn muốn kích hoạt các sa thải từ bạn tạo một hành động để responder đầu tiên như hình dưới đây. Bạn có thể mở rộng điều này để làm việc với nhiều trình điều khiển xem trình bày bằng cách tạo tên duy nhất cho IBActions.

Create an outlet to first responder

Select correct IBAction

More information on first responder and the responder chain

0

Khi tài liệu trực tuyến của Apple cho thấy, bộ điều khiển xem trình bày có trách nhiệm giải tán (trình bày) xem phương thức.

Có một bưu chính, ví dụ có sẵn here

+3

Liên kết lỗi thời. Đó là lý do tại sao bạn không nên trả lời bằng cách đăng liên kết mà không đăng một số mã mẫu trước. – GeneCode

3

Để làm điều này bên trong UIStoryboard bạn cần đầu tiên để tạo ra một đối tượng của loại UIStoryboardSegue trong dự án của bạn

Creating a new class of type <code>UIStoryboardSegue</code>

Sau đó chèn phương pháp sau đây bên trong lớp. Đây là lớp học của tôi

@implementation DismissController

- (void)perform{ 

    UIViewController *sourceVC = self.sourceViewController; 
    [sourceVC.presentingViewController dismissViewControllerAnimated:YES 
                  completion:nil]; 
} 

Bây giờ bạn có thể sử dụng nó bên UIStoryboard của bạn.Chọn nút cần thực hiện UIViewController Biến mất và kéo nút đó đến số UIViewController bạn muốn truy cập. Trong trường hợp của tôi nó cho thấy ** bỏ qua Controller * vì tên của lớp của tôi.

enter image description here

Chọn nó và bạn đã hoàn tất! Ngoài ra còn có một lời giải thích rất tốt on this website.

+1

woow, cảm ơn vì điều đó !!! –

+0

@LeoCavalcante bạn được chào đón! :) –

3

Theo Alex Cio câu trả lời cho Swift 3XCode 8.3:

Tạo lớp:

import UIKit 

class DismissSegue: UIStoryboardSegue { 
    override func perform() { 
     self.source.presentingViewController?.dismiss(animated: true, completion: nil) 
    } 
} 

Nhưng trong kịch bản bạn nên chọn:

Hành động Phân đoạn -> Tùy chỉnh -> loại bỏ

Chỉ sau khi tùy chọn này xuất hiện trên Action Segue menu

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