我试图编写一个绘制Sierpinski Carpet的程序,因此用户应该选择递归的深度并单击一个按钮,然后应该出现一个带有地毯的窗口。
但我是初学者,所以我不知道如何将按钮连接到具有参数 NSRect 的函数。
我有一个MyView类(NSView的子类)
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
if (b)
draw(0, 0, 600, 600, 4);
}
void draw (double x1, double y1, double x2, double y2, int n)
{
if (n > 0)
{
NSRect rect0 = NSMakeRect (x1 + (x2 - x1)/3, y1 + (y2 - y1)/3, (x2 - x1)/3, (y2 - y1)/3);
[[NSColor blackColor] set];
NSRectFill(rect0);
draw (x1 , y1 , x1 + (x2 - x1)/3 , y1 + (y2 - y1)/3 , n - 1);
draw (x1 , y1 + (y2 - y1)/3 , x1 + (x2 - x1)/3 , y1 + 2*(y2 - y1)/3 , n - 1);
draw (x1 , y1 + 2*(y2 - y1)/3 , x1 + (x2 - x1)/3 , y2 , n - 1);
draw (x1 + (x2 - x1)/3 , y1 + 2*(y2 - y1)/3 , x1 + 2*(x2 - x1)/3 , y2 , n - 1);
draw (x1 + 2*(x2 - x1)/3 , y1 + 2*(y2 - y1)/3 , x2 , y2 , n - 1);
draw (x1 + 2*(x2 - x1)/3 , y1 + (y2 - y1)/3 , x2 , y1 + 2*(y2 - y1)/3 , n - 1);
draw (x1 + 2*(x2 - x1)/3 , y1 , x2 , y1 + (y2 - y1)/3 , n - 1);
draw (x1 + (x2 - x1)/3 , y1 , x1 + 2*(x2 - x1)/3 , y1 + (y2 - y1)/3 , n - 1);
}
}
- (BOOL) isFlipped { return YES; }
我还有一个NSTextField *深度(这是一个IBOutlet),用户应该输入递归的深度
谢谢你的回答!:)
答案 0 :(得分:0)
您不能将任何参数传递给连接到UIButtons的方法(您可以做的最多就是传递一个int,使用button.tag = 42)。 所以我的建议是将你的UIButton连接到这样的方法,
- (IBAction)goButton:(id)sender {
// Here you get the level of recursion that the user entered in the UITextField.
NSString *recursionLevel = self.recuersionLevelOutlet.text;
// And do whatever you need to do with it.
...
}
要将UIButton连接到视图,如果您不确定,请执行以下操作。
1)打开屏幕的.xib文件。
2)按住选项并单击其名称打开.m文件(这将在侧窗格中打开)。
3)在按住 control 的同时,单击UIButton并拖动到@interface YourViewController()和@ .nd文件中的@end之间的空白区域。