2013-07-19 2 views
4

코코아 터치를 사용하여 단일보기 응용 프로그램을 만들고 있습니다. 그 단일보기에 대해 다양한 테마로 구성된 메뉴가 필요하며, 최선의 접근 방식이 무엇인지, 그리고이를 달성하는 방법에 대해 궁금해하고 있습니다.코코아 터치 및 목표 C를 사용하여 선택 메뉴 만들기

마스터 - 세부 정보보기를 만들어야합니까? 그렇다면 앱을로드하는 초기 화면으로 세부보기를 어떻게 가져올 수 있습니까? 그러나 이것이 최선의 접근법인지 확실하지 않습니다.

필자도이 pop over menu과 같은 것을보고 있었지만 이드는 선반 솔루션을 구입하는 것보다 이런 종류의 것을 직접 달성하는 법을 배웠습니다. 유사한 기능을 제공하는 Cocoa Touch에 어떤 수업이 있습니까? 그들은 분명히 코어 그래픽을 사용하여 처음부터이 메뉴를 만들었지 만, 예를 들어 UIButtons 그룹을 사용하여 이러한 유형의 메뉴를 구현하는 더 쉬운 방법이 있습니까?

코드 예제는 크게 높이 평가할 수 있지만이 문제를 해결할 수있는 최선의 방법을 찾고 있습니다. 따라서 어떤 프레임 워크가 자신에게 익숙한 지 알 수 있습니다.

TIA

+0

: 여기

당신이 UICollectionViewUICollectioViewFlowLayout과를 구현하는 것이 방법이다. 디자인과 구현에 대해 동시에 묻고 있습니다. 나는 그걸 부셔 버릴 것을 권한다. 디자인 문제로 시작하십시오. 해결되면 구현으로 넘어갑니다. –

+0

귀하의 질문은 무엇입니까? 앱 실행시 detailView를로드하는 방법이나 언급 한 예 에서처럼 팝업을 맞춤 설정하는 방법을 묻는 중입니까? – zahreelay

+0

나는 객관적인 C/코코아 터치에서 최상의 선택을하고 있는데, 선택 메뉴 (특히 다른 테마를 선택하기 위해 메뉴가 사실상 시각적이어야 함)를하고 바라건대 이것을 구현하는 방법을 찾고있다. Master-Detail보기를 사용해야합니까? UITableView 또는 UICollectionView? ActionSheet를 사용해야합니까, 아니면 UINavigationController를 사용해야합니까? 아니면 대신 사용해야하는 다른 것이 있습니까? 매우 다양한 접근법을 통해 나는 달성하고자하는 것에 가장 적합한 것이 무엇인지 궁금합니다. – Jimmery

답변

2

당신은에 사용할 수있는 버튼의 격자를 만들 UICollectionViewFlowLayoutUICollectionView를 사용하여 시도해 볼 수도 있습니다 : 다음

귀하의 경우에 도움이 될 수있는 코드의 유용한 소스입니다 다른 테마들 사이를 전환하십시오.

선택 메뉴에서 원하는 항목, 보유한 테마 수, 표시 방법 등을 알지 못하면 다른 방법보다 한 가지 방법을 제안하기가 어렵습니다. 그러나 UICollectionViewFlowLayoutUIViews을 그리드 배열로 표시하기 위해 Apple에서 제공 한 사전 정의 된 UICollectionViewLayout이기 때문에이 문제를 해결할 수있는 좋은 방법 일 수 있습니다.

헤더 파일

@interface ViewController : UIViewController <UICollectionViewDataSource,UICollectionViewDelegateFlowLayout> { 
    UICollectionView * themeSelection; 
} 

실행 파일이 질문은 매우 일반적입니다

- (void)viewDidLoad { 
    UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init]; 
    themeSelection =[[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout]; 
    [themeSelection setDataSource:self]; 
    [themeSelection setDelegate:self]; 

    [themeSelection registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"]; 
    [self.view addSubview: themeSelection]; 

    [super viewDidLoad]; 
} 

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 
    return 15; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
    UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath]; 

    //Each cell is a theme that could be selected 

    return cell; 
}  

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
    return CGSizeMake(100, 100); 
} 
+0

이것은 내가 무엇을했는지입니다! 감사! – Jimmery

1

방법은 UINavigationController를 사용하여 탐색 스택에 테마의리스트와 함께있는 UITableViewController를 밀어 어떻습니까?

제공 할 수있는 테마의 수에 제한이 없으며 매우 쉽게 할 수 있습니다.

또는 [UIViewController presentViewController : animated : completion :]을 사용하여 modalTransitionStyle을 UIModalTransitionStyleFlipHorizontal로 설정할 수 있습니다.

+0

흥미 롭습니다. 당신이 제안하고있는 UINavigationController 메소드에 대해 더 자세히 설명 할 수 있습니까? – Jimmery

1

테마 수가 6 개 이하인 경우 몇 개의 버튼이있는 UIActionSheet를 사용할 수 있습니다. 보기 컨트롤러에서 이러한 종류의 코드와 함께 "를 선택 테마"버튼을 일에 탭을 처리 : 다음 클래스 정의에, 당신의 .H 파일의 상단에

UIActionSheet* as = [[UIActionSheet alloc] initWithTitle:@"Choose Theme" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Theme 1", @"Theme 2", @"Blue Theme", @"etc."]; 
[as showInView:[self view]]; 

이 추가 :

그리고 방법과 같이하는 .m 파일 광고에

<UIActionSheetDelegate> 
:

-(void)actionSheet:(UIActionSheet*)as clickedButtonAtIndex:(NSInteger)index { 
    switch(index) { 
    case 0: 
     //It was theme 1 
     break; 
    case 1: 
     //It was Theme 2 
     break; 
    case 3: 
     //It was blue theme 
     break; 
    //And so on... 
    } 
} 

선택한 테마로 전환하여 의견을 교체합니다.

참고 :이 여섯 개 이상의 테마가있는 경우, 당신은 더 액션 시트에서 UIPickerViews에 this SO 질문에서 논의 된 솔루션 뭔가를 원하는 것입니다.

0

이렇게하는 방법에는 여러 가지가 있습니다. UITableView에 UITableView를 추가하고 특정 버튼에 actionSheet를 표시하는 것과 같습니다. 또한 UIPopOverViewController는 이러한 유형의 작업에 가장 적합합니다.

https://github.com/nacho4d/Accordion

https://github.com/kyoshikawa/ZPopoverController

+0

링크를 이용해 주셔서 감사합니다. UIPopOverViewController는 내가 뭘했는지에 대한 좋은 해결책 인 것처럼 보이지만, iPads와 iPhones 모두를위한 App을 개발하는 것은 수치스러운 iPad 전용 기능입니다. – Jimmery

관련 문제