Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 父视图->;子视图->;按钮->;子视图方法_Iphone_Objective C_Xcode - Fatal编程技术网

Iphone 父视图->;子视图->;按钮->;子视图方法

Iphone 父视图->;子视图->;按钮->;子视图方法,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我有一个带有ui视图的parentview。这将在viewdidload上加载子ViewController。subviewcontroller上有一个按钮,该按钮在内部触动时链接到名为clicked的subviewcontroller方法 这会导致错误的访问错误触发并使应用程序崩溃。我的问题是,这种设置是可能的还是我必须在父视图中使用该方法?子视图将加载在8个不同的父视图中,因此我希望将该方法保留在子视图中 这样做的正确方法是什么?这种设置的好方法是有一个协议,包括单击消息、包含按钮的视图中i

我有一个带有ui视图的parentview。这将在viewdidload上加载子ViewController。subviewcontroller上有一个按钮,该按钮在内部触动时链接到名为clicked的subviewcontroller方法

这会导致错误的访问错误触发并使应用程序崩溃。我的问题是,这种设置是可能的还是我必须在父视图中使用该方法?子视图将加载在8个不同的父视图中,因此我希望将该方法保留在子视图中


这样做的正确方法是什么?

这种设置的好方法是有一个协议,包括单击消息、包含按钮的视图中id类型的委托属性以及同一视图中触发委托消息的方法,如[self.delegate clicked]。TouchUpInside事件链接到IB中的该方法,父视图将自身设置为子视图的委托,并使自身符合协议。听起来有点棘手,但这绝对是正确的方法

协议

@protocol viewWithButtonDelegate
  -(void)buttonClicked:(UIButton*)button inView:(UIView*)view;
@end
在子视图界面中

@interface viewWithButton {
...
id<viewWithButtonDelegate> delegate;
}
...
@property (nonatomic, retain) id<viewWithButtonDelegate> delegate
-(void)buttonClicked:(id)sender;
...
@end
控制器接口声明如下

@interface myController<viewWithButtonDelegate>

希望这有帮助…

我认为发布崩溃相关代码是个好主意。当方法运行时,它会崩溃。方法是空的,我想知道这方面的最佳实践是什么,而不是特定于代码。谢天谢地,任何设置都是可能的。崩溃是特定于代码的。我知道我已经花了将近两年的时间,但我也有同样的问题。它快把我逼疯了。。你找到解决办法了吗?谢谢。关键是使用委托,因此subview.delegate=parentview,请参见下面的@VdesmedT答案
@interface myController<viewWithButtonDelegate>
-(void)buttonClicked:(UIButton*)button inView:(UIView*)view {
  //do something in response to button clicked
}