2013-10-24 48 views
1

我试图在作为子类添加到MainCanvasController的2个不同视图之间传递图像。 的形象似乎获得通过(它显示,当打印到控制台),但它不显示任何内容... 这是我尝试接收并显示图像C4在子类之间传递图像

-(void)receiveNumber:(C4Image*)number{ 
    C4Log(@"number:%@", number); 
    number.center=self.canvas.center; 
    [self.canvas addImage:number]; 

    receivedImage=number; 
    C4Log(@"received number: %@", receivedImage); 

    } 

,这里是我如何发布图像

[secondView receiveNumber:originalImage]; 

我真的不知道发生了什么问题。 (说实话,我根本不知道...)所以,任何提示都非常感谢!

+0

试试这个:C4Image * newNumber = [number copy];'然后改变新数字的中心,然后将新数字添加到画布。 –

+0

刚刚尝试过。它没有区别 – suMi

+1

我在GitHub上发布了代码,以防万一你想看看完整的东西:https://github.com/susemiessner/Urban-Alphabets/tree/master/Test_PostingImage (我说过感谢您的不断帮助已经?!太棒了!谢谢!) – suMi

回答

1

我看了一下你的项目,找到了答案。

FirstView对象有变量称为secondView,这是正是相同的名称,在主工作区中的对象。但是,尽管具有相同的名称,但它们都是不同的对象。

我已经做了两件事情:

1),而不是为对象,使用特性接口文件中使用的变量。 2)在FirstView 类3)创建SecondView财产firstView属性设置为工作区中的同一个对象,secondView

FirstView.h样子:

@interface FirstView : C4CanvasController{ 
    C4Label *goToSecondView; 
} 
@property (readwrite, strong) C4Window *mainCanvas; 
@property (readwrite, strong) C4Image *postedImage; 
@property (readwrite, strong) SecondView *secondView; 
@end 

postNoti:样子:

-(void)postNoti{ 
    C4Log(@"tapped"); 
    [self postNotification:@"changeToSecond"]; 
    [self.secondView receiveNumber:self.postedImage]; 
} 

备注我摆脱了[SecondView new];线。

以下是你缺少的一部分

我的工作区具有以下行:

firstView.secondView = secondView; 

这台第一种观点的可变有到secondView参考目的。

您还没有这样做,所以您将图像传递给名称为的对象的名称为,因为该视图在主工作区的画布中可见。

+0

谢谢!我每天都在用C4/Objective C学习新东西! (如现在使用属性)。 – suMi

+0

太棒了!C4背后的核心思想之一是,当你学习如何使用它时,你也在学习ObjC,因为API的设计反映了相同的模式。 –