我知道在堆栈溢出时还有另外一个这样的问题,但我的问题来自我自己的类而不是UIButton。我的方法要复杂得多。第一个评论行有效。
@implementation GettingStartedViewController
- (void)actionSheet:(UIActionSheet *)actionSheet
clickedButtonAtIndex:(NSInteger)buttonIndex {
//[cui showHelpClickButtonAtIndex:buttonIndex:self.view:
//theController:FALSE:HelpPageGettingStarted];
// Error from this next line error: object cannot be set - either
//readonly property or no setter found
self.theController = [cui showHelpClickButtonAtIndex:buttonIndex:
self.view:theController:FALSE:HelpPageGettingStarted];
}
- (void)viewDidLoad {
[super viewDidLoad];
cui = [CommonUI alloc]; // Used for several functions
}
继承了它所称的功能。我试图重用代码并将事物保存在一个函数中。该函数使用addSubView
和presentModalViewController
。
@implementation CommonUI
-(UIViewController *)showHelpClickButtonAtIndex:(int)buttonIndex:
(UIView *)vw:(UIViewController *)vc:(BOOL)useNav:(HelpPage)page{
if (buttonIndex == CommonUIInfoHelpPagesBtnIdx) {
if (useNav == TRUE) {
// snip
} else {
vc = [[HelpViewController alloc] initWithNibName:@"HelpView"
bundle:nil onPage:page];
[vw addSubview:vc.view];
return [vc autorelease];
}
} else {
// Snip
}
// Snip
}
答案 0 :(得分:3)
消息显示theController
中GettingStartedViewController
没有属性。你的方法调用工作得很好。
self.theController = someObject
与调用setter方法相同:[self setTheController:someObject]
属性自动生成那些getter和setter;所以如果你没有定义一个属性,它就不会创建一个setter,这就是你的问题。
将以下内容添加到头文件中:
@property (nonatomic, retain) UIViewController* theController;
并在您的实施文件中合成它:
@synthesize theController;
不要忘记在-dealloc
方法中释放它,因为你告诉setter保留对象:
-(void) dealloc {
[theController release];
theController = nil;
}
答案 1 :(得分:0)
iPhone,错误:对象无法设置 - 无论是readonly属性还是没有setter发现错误,当你还没有合成它并仍然访问它的setter或/和getter方法时。