我一直在尋找關於如何做到這一點的信息,但沒有發現任何我明白的東西。加載XIB到一個子視圖
基本上我希望能夠(從ViewController.xib)在子視圖中加載另一個XIB文件。這個新的子視圖應該是可操縱的,所以它可以通過多點觸控手勢和/或輕掃手勢移動。
我試圖從ViewController添加一個「視圖」對象,然後將其他XIB加載到該子視圖對象中。
希望有人可以提供幫助。謝謝!
我一直在尋找關於如何做到這一點的信息,但沒有發現任何我明白的東西。加載XIB到一個子視圖
基本上我希望能夠(從ViewController.xib)在子視圖中加載另一個XIB文件。這個新的子視圖應該是可操縱的,所以它可以通過多點觸控手勢和/或輕掃手勢移動。
我試圖從ViewController添加一個「視圖」對象,然後將其他XIB加載到該子視圖對象中。
希望有人可以提供幫助。謝謝!
您應該能夠通過在您的ViewController
中創建其他類的實例,然後將其作爲子視圖添加到當前視圖控制器來實現您想要的效果。
MyOtherViewController *movc = [[MyOtherViewController alloc] init];
[self.view addSubview:movc.view];
至於處理的手勢,你既可以處理他們在MyOtherViewController
類,或使容器看待和處理他們在你的ViewController
。不要忘記他們是子視圖,任何移動都應該與他們的超級視圖相關。
您可以通過創建xib(選擇File New ...「user interface」,「view」)來定義xib中的子視圖。
可以加載像這樣的觀點:
UIView *newView = [[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil];
這種新的視圖現在可以像任何其他子視圖處理:
// assign it to a property
@property (strong, non atomic) UIView *viewFromXib;
@sythesize viewFromXib=_viewFromXib;
self.viewFromXib = newView;
// add it to your hierarchy
self.viewFromXib.frame = CGRectMake(/* this will start out 0,0 the size from the xib */);
[self.view addSubview:self.viewFromXib];
// add gesture recognizer
UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[self.viewFromXib addGestureRecognizer:tapGR];
...等等
以上代碼幾乎是正確的,但除了
UIView *newView = [[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil];
應該
UIView *newView = [[[NSBundle mainBundle] loadNibNamed:@"MyNewXib" owner:self options:nil] objectAtIndex:0];
,並在視圖控制器只需你可以添加
[self.view addSubview:newView];
http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/ – danh
呀,你是對的,我誤解了問題的一部分,並從某處彈出另一個視圖控制器。 – Adis