UIAction 만들기변수 목록이 아닌 배열로 전달하여 '기타 단추'를 시트합니다.
UIAction의 단추 제목에 사용할 문자열 배열이 있는 경우Sheet. 안타깝게도 메서드 호출의 다른 ButtonTitles: 인수에는 배열이 아닌 문자열의 가변 길이 목록이 사용됩니다.
UIAction에 이러한 제목을 전달하려면 어떻게 해야 합니까?시트? 제가 제안한 해결 방법은 다른 버튼 제목에 0을 전달한 다음 addButtonWithTitle:을 사용하여 버튼 제목을 개별적으로 지정하는 것입니다.그러나 이것은 UIAction의 첫 번째 위치로 "Cancel" 버튼을 이동시키는 문제가 있습니다.마지막이 아니라 시트입니다. 마지막이 되었으면 합니다.
1) 변수 문자열 목록 대신 배열을 전달하거나, 또는 2) 취소 버튼을 UIAction 하단으로 이동하는 방법이 있습니까?시트?
감사해요.
나는 이것이 작동하도록 했습니다. (일반 버튼을 사용하고 다음과 같이 추가하면 됩니다.)
NSArray *array = @[@"1st Button",@"2nd Button",@"3rd Button",@"4th Button"];
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Title Here"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
// ObjC Fast Enumeration
for (NSString *title in array) {
[actionSheet addButtonWithTitle:title];
}
actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:@"Cancel"];
[actionSheet showInView:self.view];
하나의 작은 메모: [액션]Sheet addButtonWithTitle:]은(는) 해당 버튼의 인덱스를 반환하므로 안전하고 "정리"하기 위해 다음 작업을 수행할 수 있습니다.
actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:@"Cancel"];
자바와 닉의 답변을 받아 조금 더 확장합니다.이 솔루션에 파괴 버튼을 통합하려면:
// Create action sheet
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:title
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
// Action Buttons
for (NSString *actionName in actionNames){
[actionSheet addButtonWithTitle: actionName];
}
// Destruction Button
if (destructiveName.length > 0){
[actionSheet setDestructiveButtonIndex:[actionSheet addButtonWithTitle: destructiveName]];
}
// Cancel Button
[actionSheet setCancelButtonIndex: [actionSheet addButtonWithTitle:@"Cancel"]];
// Present Action Sheet
[actionSheet showInView: self.view];
응답에 대한 빠른 버전이 있습니다.
//array with button titles
private var values = ["Value 1", "Value 2", "Value 3"]
//create action sheet
let actionSheet = UIActionSheet(title: nil, delegate: self, cancelButtonTitle: nil, destructiveButtonTitle: nil)
//for each value in array
for value in values{
//add a button
actionSheet.addButtonWithTitle(value as String)
}
//display action sheet
actionSheet.showInView(self.view)
값을 선택하려면 ViewController에 대리자를 추가합니다.
class MyViewController: UIViewController, UIActionSheetDelegate
그리고 "clickedButtonAt" 메서드를 구현합니다.색인"
func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {
let selectedValue : String = values[buttonIndex]
}
언급URL : https://stackoverflow.com/questions/2384044/create-uiactionsheet-otherbuttons-by-passing-in-array-not-varlist
'source' 카테고리의 다른 글
WPF 전역 글꼴 크기 (0) | 2023.06.06 |
---|---|
파이어베이스 인증에서 이메일을 변경하는 방법은 무엇입니까? (0) | 2023.06.06 |
레일에서 비계 실행 취소 (0) | 2023.06.06 |
Rstudio에서 작업 디렉토리를 원본 파일 위치로 설정하기 위한 R 명령 (0) | 2023.06.06 |
오류: Android 응용 프로그램 모듈의 Gradle 구성을 구문 분석할 수 없습니다. (0) | 2023.06.06 |