我有一个名为Selectvideo的Viewcontroller。这有一个名为selectvideo1的子类。我如何将子类中的int传递给viewcontroller?我试过了,但每次尝试都会返回0。在子类中,它返回0。
我正在尝试将selectedCellValue从selectvideo1传递到selectvideo。使用这个:
selectvideo1.h
@interface SelectVideo1 : SelectVideo <UIActionSheetDelegate>
- (id)initWith:(NSString *)Selected;
@property int selectedCellValue;
@end
selectvideo1.m
-(void)didComplete:(NSDictionary *)response
{
SelectVideo *selectVideo = [[SelectVideo alloc] init];
selectVideo.selectedRowValue = selectedCellValue;
}
selectvideo.h
@interface SelectVideo : UITableViewController<NSFetchedResultsControllerDelegate>
@property (nonatomic, retain) NSMutableArray *items;
-(IBAction)songsDone:(id)sender;
@property int selectedRowValue;
@end
selectvideo.m
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"%d", selectedRowValue);
}
答案 0 :(得分:0)
你误解了你的“子类”。由于SelectVideo1
是SelectVideo
的遗传类,因此它继承了父类的变量和属性。父类不了解任何子类或其变量。如果你希望你的超类知道变量,你需要在那里定义它而不是在子类中。
parentClass
{
//variables and properties (example selectedRow)
}
childClass : parentClass (inherits all of the parentClass's variables, properties, functions, etc.
{
//new variables and properties that the parentClass doesn't want to see
//use any of parentClass's variables in this class's implementation.
}
然后你可以在两个类中使用parentClass的属性和变量,只在childClass的一个实例中使用childClass的变量。
长话短说。如果要在parentClass中使用变量,请在parentClass中定义变量。 childClass将继承它们并能够使用它们。
答案 1 :(得分:0)
父类(SuperClass)无法访问子类属性,但子类可以访问/继承父类(SuperClass)的所有属性。如果您想这样做,请创建一个sharedManager并在其中保存您的属性并访问它。
答案 2 :(得分:0)
我的敞篷车是轿车的子类这一事实并不意味着敞篷车的一个实例可以将信息发送到另一个不能通过类方法转换的轿车实例。这两个对象需要使用属性getter / setter或实例方法相互通信。
你发布的代码应该有用 - 有点像。在didComplete方法中,您创建一个SelectVideo类的新实例,并将SelectVideo对象的selectedRowValue类设置为selectedCellValue。
但是,你如何使用这个新的SelectVideo实例?在您发布的代码中,您将其创建为局部变量,设置它的selectedRowValue属性,然后将其丢弃。当您的didComplete方法完成时,您创建的新SelectVideo对象将超出范围,ARC将取消分配它。
这就像创建一个新的轿车对象,设置它的无线电台,然后将新的轿车从悬崖上推开而不用它来驱动它。
在我看来,你对于什么是对象以及分配对象意味着什么有一些根本的误解。
您在哪里发送此信息?你能描绘你的物体并解释你想要传递的信息吗?