iOS에서 풀다운 (드롭 다운 목록)을 구현했습니다.
16658 단어 XcodeiOSObjective-C
여러분 올해의 목표는 세웠습니까?
Qiita의 목표는 "주당 하나의 기사를 만들거나 업데이트"로 설정했습니다.
지식을 축적하는 것도 중요하지만 "정보를 발신한다"는 것을 염두에 두고 싶습니다.
정보 발신을 위해서도, 지금 갱입니다만 GitHub 데뷔했습니다! ! ! 하지만 사용법에 좀처럼 익숙하지 않다.
우선 무언가를 만들고 싶었기 때문에 이번에는 iOS 용 풀다운과 같은 것을 만들려고했습니다.
iOS에서 풀다운 구현
iOS 개발을 시작했을 때 여러분 생각한 적이 있는 것은 아닐까요.
windows에서 자주 보는 풀다운은 없는 것인가・・・라고.
드럼 롤식의 컨트롤은 아무것도 서투르기 때문에 풀다운과 같은 컨트롤을 작성해 보았습니다.
2시간 정도로 팍으로 만든 것이므로 기능, 품질은 이마이치입니다만, 조금씩 개량을 거듭할 예정입니다.
사용하신 분은 코멘트 받을 수 있으면 고맙습니다.
소스는 GitHub 페이지에서 삭제하십시오.
GitHub_iOS_pulldown
우선 완성 이미지에서
이미지는 iPad에서의 표시 이미지가 됩니다.
iPhone의 경우 전체 화면으로 표시됩니다. (설정으로 변경할 수 있을까・・・?)
풀다운의 제작에 대해서입니다만, 배열을 건네주면 리스트를 표시해 주는 것이 됩니다.
건네받은 배열을 tableview에 표시해 팝업으로 표시하고 있을 뿐의 간단한 것입니다.
다음 절차에 따라 사용하십시오.
① GitHub에서 떨어뜨린 소스에서 SelectListViewController.h, SelectListViewController.m, SelectListViewController.xib의 파일을 자신의 프로젝트에 복사
②선택지 리스트 작성
이번에는 plist로 만들었습니다.
③풀다운 표시 처리의 실장
presentViewController를 사용하여 팝업 형식으로 풀다운 표시
①자신의 프로젝트에 복사
여기는 할애합니다.
② 선택사항 작성
DB로부터 취득이라고 하는 패턴이 많다고 생각합니다만, 이번은 plist로부터 취득.
아래 작성 예입니다.
Array 안에 String 혹은 Dictionary 로 값을 넣은 것을 작성합니다.
plist로 선택 만들기<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>arrayString</key>
<array>
<string>選択肢1</string>
<string>選択肢2</string>
<string>選択肢3</string>
</array>
<key>items</key>
<array>
<dict>
<key>title</key>
<string>タイトル1</string>
<key>value</key>
<string>選択肢1</string>
</dict>
<dict>
<key>title</key>
<string>タイトル2</string>
<key>value</key>
<string>選択肢2</string>
</dict>
<dict>
<key>title</key>
<string>タイトル3</string>
<key>value</key>
<string>選択肢3</string>
</dict>
<dict>
<key>title</key>
<string>タイトル4</string>
<key>value</key>
</dict>
</plist>
③풀다운 표시 처리의 실장
풀다운 표시 처리- (void)viewDidLoad {
[super viewDidLoad];
//ラベルへタップイベントの追加
[self.pulldownLabel addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(commonTapAction:)]];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
/** 処理概要:タップ処理
*
*/
- (void)commonTapAction:(UITapGestureRecognizer *)tapGesture
{
//プルダウンを表示する
[self showPopUpList:@"PopupListData"
arrayName:@"items"
scrKey:@"value"
title:@"title"
view:self.pulldownLabel];
}
/** 処理概要:ポップアップリスト表示処理
*
* param :pListName, title, label
* return :なし
*/
- (void)showPopUpList:(NSString *)pListName arrayName:(NSString *)arrayName scrKey:(NSString *)scrKey title:(NSString *)title view:(UIView *)view
{
//ポップアップリストに表示するデータを設定する
NSString* path = [[NSBundle mainBundle]pathForResource:pListName ofType:@"plist"];
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];
SelectListViewController *slVC = [[SelectListViewController alloc] initWithSource:[dic objectForKey:arrayName]
dataSrcKey:scrKey
selectedIndex:0];//初期選択値を設定
slVC.modalPresentationStyle = UIModalPresentationPopover;
slVC.delegate = self;
slVC.title = title;
//ポップアップのサイズを変更
slVC.preferredContentSize = CGSizeMake(200, 300);
//ポップアップの表示
[self presentViewController:slVC animated: YES completion: nil];
UIPopoverPresentationController *presentationController = [slVC popoverPresentationController];
presentationController.permittedArrowDirections = UIPopoverArrowDirectionRight;
presentationController.sourceView = view;
presentationController.backgroundColor = [UIColor clearColor];
}
/** 処理概要:リスト選択時
*
*/
- (void)popupList:(SelectListViewController*)sender willCloseWithFinished:(BOOL)finished
{
//選択値をセット
if (sender.dataSrcKey != nil || [sender.dataSrcKey isEqualToString:@""])
{
id obj = [sender.dataSrcArray objectAtIndex:sender.selectedIndex];
self.pulldownLabel.text = [obj valueForKey:sender.dataSrcKey];
}
else
{
self.pulldownLabel.text = [[sender dataSrcArray] objectAtIndex:sender.selectedIndex];
}
//ポップアップを閉じる
[self dismissViewControllerAnimated:YES completion:nil];
}
/** 処理概要:ウィンドウ移動時に呼ばれる
*
*/
- (void)movePosition:(CGPoint)pos
{
}
풀다운의 초기 선택치를 설정하기 위해서는 초기화시에 건네줍니다.
UIlabel등을 커스터마이즈 해 기억해 두는 것이 좋다고 생각합니다.
modalPresentationStyle은 팝업 표시 형식입니다.
여기서 전체 화면이거나 팝오버 등을 설정할 수 있습니다.
각 값의 사양은 아래를 참조하십시오.
시간이 있으면 이번에 일본어 번역해 둡니다.
htps : //에서 ゔぇぺぺr. 아 ぇ. 코 m / 레후 렌세 / 우이 키 t / 우모도 lp 센세 온 스타 ぇ
이상이 됩니다.
이 기사가 조금이라도 여러분의 도움이 되면 다행입니다.
Reference
이 문제에 관하여(iOS에서 풀다운 (드롭 다운 목록)을 구현했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yosshi_0511/items/b44bf4be485bb11f258e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>arrayString</key>
<array>
<string>選択肢1</string>
<string>選択肢2</string>
<string>選択肢3</string>
</array>
<key>items</key>
<array>
<dict>
<key>title</key>
<string>タイトル1</string>
<key>value</key>
<string>選択肢1</string>
</dict>
<dict>
<key>title</key>
<string>タイトル2</string>
<key>value</key>
<string>選択肢2</string>
</dict>
<dict>
<key>title</key>
<string>タイトル3</string>
<key>value</key>
<string>選択肢3</string>
</dict>
<dict>
<key>title</key>
<string>タイトル4</string>
<key>value</key>
</dict>
</plist>
- (void)viewDidLoad {
[super viewDidLoad];
//ラベルへタップイベントの追加
[self.pulldownLabel addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(commonTapAction:)]];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
/** 処理概要:タップ処理
*
*/
- (void)commonTapAction:(UITapGestureRecognizer *)tapGesture
{
//プルダウンを表示する
[self showPopUpList:@"PopupListData"
arrayName:@"items"
scrKey:@"value"
title:@"title"
view:self.pulldownLabel];
}
/** 処理概要:ポップアップリスト表示処理
*
* param :pListName, title, label
* return :なし
*/
- (void)showPopUpList:(NSString *)pListName arrayName:(NSString *)arrayName scrKey:(NSString *)scrKey title:(NSString *)title view:(UIView *)view
{
//ポップアップリストに表示するデータを設定する
NSString* path = [[NSBundle mainBundle]pathForResource:pListName ofType:@"plist"];
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];
SelectListViewController *slVC = [[SelectListViewController alloc] initWithSource:[dic objectForKey:arrayName]
dataSrcKey:scrKey
selectedIndex:0];//初期選択値を設定
slVC.modalPresentationStyle = UIModalPresentationPopover;
slVC.delegate = self;
slVC.title = title;
//ポップアップのサイズを変更
slVC.preferredContentSize = CGSizeMake(200, 300);
//ポップアップの表示
[self presentViewController:slVC animated: YES completion: nil];
UIPopoverPresentationController *presentationController = [slVC popoverPresentationController];
presentationController.permittedArrowDirections = UIPopoverArrowDirectionRight;
presentationController.sourceView = view;
presentationController.backgroundColor = [UIColor clearColor];
}
/** 処理概要:リスト選択時
*
*/
- (void)popupList:(SelectListViewController*)sender willCloseWithFinished:(BOOL)finished
{
//選択値をセット
if (sender.dataSrcKey != nil || [sender.dataSrcKey isEqualToString:@""])
{
id obj = [sender.dataSrcArray objectAtIndex:sender.selectedIndex];
self.pulldownLabel.text = [obj valueForKey:sender.dataSrcKey];
}
else
{
self.pulldownLabel.text = [[sender dataSrcArray] objectAtIndex:sender.selectedIndex];
}
//ポップアップを閉じる
[self dismissViewControllerAnimated:YES completion:nil];
}
/** 処理概要:ウィンドウ移動時に呼ばれる
*
*/
- (void)movePosition:(CGPoint)pos
{
}
Reference
이 문제에 관하여(iOS에서 풀다운 (드롭 다운 목록)을 구현했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yosshi_0511/items/b44bf4be485bb11f258e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)