iOS, UIMenu

12592 단어 iOSswiftUIkitUIkit

🧐 UIMenu를 만들어볼거에요!

⛄️ 테이블 뷰에 적용하기(iOS 13.0 ↑)

Step 1

UIAction 배열을 생성합니다. 그리고 UIMenu를 생성하여 children 파라미터에 생성한 UIAction 배열을 적용합니다.

⛄️ ViewController.swift

class ViewController: UIViewController {
    private lazy var menuItems: [UIAction] = {
        return [
            UIAction(
                title: "Hello World!",
                image: UIImage(systemName: "figure.wave"),
                handler: { _ in
                    print("Hello World!")
                }),
            UIAction(
                title: "Morning World!",
                image: UIImage(systemName: "cloud.sun.fill"),
                handler: { _ in
                    print("Moring World!")
                }),
            UIAction(
                title: "Night World!",
                image: UIImage(systemName: "moon.stars.fill"),
                handler: { _ in
                    print("Night World!")
                })
        ]
    }()
    
    private lazy var menu: UIMenu = {
        return UIMenu(title: "", options: [], children: menuItems)
    }()
    ...
}
Step 2

TableView를 생성해주세요. 그 다음, tableView(_:contextMenuConfigurationForRowAt:point:) 메소드를 추가해줍시다.

Step 3

위에서 생성한 메소드에서 UIContextMenuConfiguration를 리턴받아야합니다. 저는 identifier와 previewProvider는 없이 만들거라 nil값을 주기로 했습니다.

⛄️ ViewController.swift

...

extension ViewController: UITableViewDataSource, UITableViewDelegate {
...
    func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
        return UIContextMenuConfiguration(identifier: nil,
                                          previewProvider: nil,
                                          actionProvider: {_ in
            return self.menu
        })
    }
}

⛄️ 결과!

⛄️ 버튼에 적용하기(iOS 14.0 ↑)

Step 1

버튼에 메뉴를 적용하는 것은 테이블 뷰에 적용하는 것보다 더 쉽습니다. 우선 button: UIButton을 만들어주시고 viewDidLoadbutton.menu = menu(테이블 뷰에 적용하기 Step 1에서 만든 menu입니다.)를 추가해줍니다.

⛄️ ViewController.swift

class ViewController: UIViewController {
    ...
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
        button.menu = menu
    }
}
...
Step 2

여기까지만해도 완성이지만, 버튼을 짧게 눌렀을 때 바로 메뉴를 보이게 하기위해서는 viewDidLoadbutton.showsMenuAsPrimaryAction = true 를 추가해줍시다.

⛄️ ViewController.swift

class ViewController: UIViewController {
    ...
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
        button.menu = menu
        button.showsMenuAsPrimaryAction = true
    }
}
...

⛄️ 결과!

🧐(아래 참고내용을 통해 더 자세한 정보를 확인할 수 있습니다!)
Apple Developer

좋은 웹페이지 즐겨찾기