解决问题后编辑:问题“通常”很容易解决,但是花了几个小时思考并帮助弄清楚我哪里出错了。似乎当我创建ViewController2时,我将它设置为ViewController的子类,瞧!如果它是一个子类,它将继承“mother”类中的所有内容。因此,当我删除文件时,创建了具有相同名称的新文件,但是使用了“UIViewController”的子类它可以工作!
问题的图片。
Storyboard:上部segue是一个名为“Test1”的部分。它连接在视图之间。第二个较低的是“Test2”(未使用!),它连接在“Button”和ViewController2之间。
我是Objective-C编程的新手,并遇到了一个问题。
如果你看一张图片,你会看到一个带有三个按钮的菜单。以编程方式创建的两个按钮名为“NEWBUTTON”和“NEWBUTTON2”。单击“NEWBUTTON”时,它会调用一个segue,为ViewController2创建两个按钮。问题是“NEWBUTTON”和“NEWBUTTON2”也会显示在ViewController2中。 ViewController2假设只有两个按钮和一个标签。
从图片中可以看出,ViewController2中没有显示名为“BUTTON”的按钮。 “BUTTON”不是以编程方式创建的,而是通过从故事板中拖放来创建的。
如何制作ViewController中的两个按钮的示例。 AddMyButton是一个创建按钮并带有两个参数(NSString和一个int)的函数。这个prepareForSegue方法在第一个ViewController中:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"Test1"])
{
ViewController2 *vc = [[ViewController2 alloc]init];
vc = [segue destinationViewController];
UIButton *bt = [[UIButton alloc]init];
[vc.view addSubview:bt = [self addMyButton:@"HAHA": 0]];
[vc.view addSubview:bt = [self addMyButton:@"HLAAA": 50]];
vc.laabel.text = @"HAh";
}
/*else if ([segue.identifier isEqualToString:@"Test2"])
{
ViewController2 *vc = [[ViewController2 alloc]init];
vc = [segue destinationViewController];
UIButton *bt = [[UIButton alloc]init];
[vc.view addSubview:bt = [self addMyButton:@"HAHA": 0]];
[vc.view addSubview:bt = [self addMyButton:@"HLAAA": 50]];
vc.laabel.text = @"HAh";
}*/
}
第一个视图中按钮的示例:
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *ny = [self addMyButton:@"NEWBUTTON": 100];
[self.view addSubview:ny];
ny = [self addMyButton:@"NEWBUTTON2": 150];
[self.view addSubview:ny];
// Do any additional setup after loading the view, typically from a nib.
}
按钮执行segue的示例:
-(void)buttonPressed:(UIButton*) sender
{
if ([sender.titleLabel.text isEqual: @"NEWBUTTON"]) {
[self performSegueWithIdentifier:@"Test1" sender:sender];
} else if ([sender.titleLabel.text isEqual: @"NEWBUTTON2"]) {
[self performSegueWithIdentifier:@"Test2" sender:sender];
} else {
NSLog(@"HELLO");
}
}
答案 0 :(得分:0)
试试吧......
UIButton *oddBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
oddBtn.frame = CGRectMake(10, 10, 70, 70);
[oddBtn setBackgroundImage:[UIImage imageNamed:@"myImageName"] forState:UIControlStateNormal];
[oddBtn setBackgroundColor:[UIColor clearColor]];
[oddBtn setTag:i];
[oddBtn addTarget:self action:@selector(getCategoryDetail:) forControlEvents:UIControlEventTouchDown];
[self.View addSubview:oddBtn];
希望我帮助
答案 1 :(得分:0)
在viewDidLoad方法
中实现此代码UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button1.frame = CGRectMake(50, 10, 70, 50);
[button1 setBackgroundImage:[UIImage imageNamed:@"myImageName"] forState:UIControlStateNormal];
[button1 setBackgroundColor:[UIColor clearColor]];
[button1 setTag:1];
[button1 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];
[button1 setTitle:@"Button1" forState:UIControlStateNormal];
[self.view addSubview:button1];
UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button2.frame = CGRectMake(130, 10, 70, 50);
[button2 setBackgroundImage:[UIImage imageNamed:@"myImageName"] forState:UIControlStateNormal];
[button2 setBackgroundColor:[UIColor clearColor]];
[button2 setTag:2];
[button2 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];
[button2 setTitle:@"Button2" forState:UIControlStateNormal];
[self.view addSubview:button2];
它会在基于故事板的应用程序上创建两个按钮。它的工作原理与没有故事板应用程序相同。我希望它可以帮助你。感谢
答案 2 :(得分:0)
最后我明白了...... :)通过创建一个新项目来模拟你的问题。
检查故事板中类的第二个视图控制器。它将是 ViewController 。我对吗?更改为 ViewController2