어떻게하면 좋습니까?보기에 임의의 수의 버튼을 추가하십시오.
2 개의 UIView가 있습니다. MainNavView 및 SubNavView를 호출 할 수 있습니다. MainNavView에는 설정된 수의 단추가 있습니다 (6 개).
사용자가 MainNavView에서 첫 번째 버튼을 클릭하면 SubNavView로 이동하고이보기에는 예를 들어 4 개의 버튼이 있습니다. MainNavView에서 두 번째 버튼을 클릭하면 SubNavView로 이동하지만, 예를 들어 이번에는 2 개의 버튼이 있습니다.
그래서 MainNav의 각 버튼에는 다른 수의 버튼이있는 SubNavView가 있습니다. 각 "SubNavView"에 대한 버튼의 수는 알고 있습니다.
저는이 작업을 수행하는 방법에 조금 얽혀 있습니다. 내 모든 단추가 내 pushButton 동작에 연결되어 있습니다. 그런 다음 어떤 버튼이 눌러 졌는지에 따라 여러 개의 버튼을 만들고 NSMutableArray에 추가합니다.
그런 다음 prepareForSegue에서이 배열을 SubNavView로 보내서 단추로 채 웁니다. 나는 올바른 방향으로 가고있는가?
다음은 현재 내 MainNavView.m에있는 것입니다. 나는 switchNodeView (처음에 viewDidLoad에 코드 추가)에서 화면에 2 개의 버튼을 그릴 수 있는지 테스트하기 위해 switch-case 코드를 사용했다.
EDIT * 예를 살펴보면 MainNavView에서 단추의 태그를 가져온 다음 MainNav 단추 태그를 기반으로 SubNavView의 viewDidLoad에서 만드는 모든 SubNav 단추를 수행해야합니다. 신분증? 이 올바른지? 그렇다면 SubNavView의 viewDidLoad에서 푸시 된 버튼에 대한 액세스 권한을 얻는 방법은 무엇입니까? prepareForSegue에서이 행을 확인할 수 없습니다.
[vc setSelectedButton:tagIndex];
는 MainNavView.m에 다음에 코드로 업데이트 :
이-(IBAction)pushButton:(id)sender
{
[self performSegueWithIdentifier:@"segueToSubNav" sender:sender];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"segueToSubNav"])
{
// Get reference to the destination view controller
SubNavViewController *vc = [segue destinationViewController];
// Get button tag number
NSInteger tagIndex = [(UIButton *) sender tag];
// Pass any objects to the destination view controller here
//[vc setSelectedButton:tagIndex];
}
}
enter code here
당신은 당신의 SubNavView
클래스에 property
를 추가 할 수
#import "ViewController.h"
#import "SubNavViewController.h"
@interface ViewController()
@end
@implementation ViewController
@synthesize buttons;
@synthesize myButton1, myButton2;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)pushButton:(id)sender
{
int theTag = ((UIView *) sender).tag;
switch (theTag)
{
case 1:
{
NSLog(@"Getting Here");
buttons = [[NSMutableArray alloc] init];
// Button 1
myButton1 = [UIButton buttonWithType:UIButtonTypeCustom];
myButton1.tag = 1;
// X, y, width, height
myButton1.frame = CGRectMake(60, 60, 100.f, 100.f);
UIImage *buttonImage1 = [UIImage imageNamed:@"button.png"];
[myButton1 setBackgroundImage:buttonImage1 forState:UIControlStateNormal];
[self.view addSubview:myButton1];
// Add targets and actions
[myButton1 addTarget:self action:@selector(getButtons) forControlEvents:UIControlEventTouchUpOutside];
myButton1.tag = 0;
// Button 2
myButton2 = [UIButton buttonWithType:UIButtonTypeCustom];
myButton2.tag = 1;
// X, y, width, height
myButton2.frame = CGRectMake(160, 160, 100.f, 100.f);
UIImage *buttonImage2 = [UIImage imageNamed:@"button.png"];
[myButton2 setBackgroundImage:buttonImage2 forState:UIControlStateNormal];
[self.view addSubview:myButton2];
// Add targets and actions
[myButton2 addTarget:self action:@selector(getButtons) forControlEvents:UIControlEventTouchUpOutside];
myButton2.tag = 0;
// Add to array
[buttons addObject:myButton1];
[buttons addObject:myButton2];
break;
}
case 2:
NSLog(@"Where to Stay");
// Create buttons here
break;
case 3:
NSLog(@"Where to Eat");
// Create buttons here
break;
default:
break;
}
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"segueToSubNav"])
{
// Get reference to the destination view controller
SubNavViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
[vc setMyObjectHere:buttons];
}
}
@end
MainNavView에서 SubNavView의 버튼을 만드는 이유는 무엇입니까? SubNavView가 자체 버튼을 만든다면 더 좋을 것 같습니다. – LuisCien
죄송합니다 위의 EDIT를 참조하십시오. 내가하려고했던 것을 깨달았습니다. – heyred
프로그래밍 방식으로 단 하나의 단추를 추가하는 방법을 먼저 알아냅니다. 그런 다음 더 많은 것을 무작위로 추가하고 첫 번째 패턴을 반복하십시오. 당신은 아마도 "난수"요구에 의해 길을 잃었을 것이고 그것은 당신의 사고 과정을 흐리게 만들 것입니다. 그래서 그 부분을 무시하십시오. –