2013-08-26 44 views
-2

File Organization關閉由tableViewController提供的ModalView?

在我的項目通過添加它作爲一個子視圖中的ViewController,它加載的表(表類)內的應用程序啓動(ViewController.h - [self.view addSubview:Table.tableView])

Camera Class是詳細的視圖,所以當你點擊一個表格行時,它會加載Camara.xib。直到這裏一切正常。

問題是當我嘗試關閉Camera.xib並返回ViewController.xib時,當我這樣做時Camera.xib解散沒問題,但不是回到ViewController.xib內部的Table.xib,應用程序只加載Table.xib,因此放置在ViewController.xib視圖中的其餘對象不顯示。

我在做什麼錯?

在此先感謝!

CODE:

Table.m

- (void)viewDidLoad 
{ 

    roomsArray = [[NSMutableArray alloc] initWithObjects:nil]; 
    [super viewDidLoad]; 

} 


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // my code... 

    Camara *camara = [[Camara alloc] initWithNibName:@"Camara" bundle:nil]; 
    [self presentViewController:camara animated:YES completion:nil]; 

} 

Camara.m

-(IBAction)cancel:(id)sender { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

ViewController.m

- (void)viewDidLoad 
{ 

    table = [[Table alloc] initWithNibName:@"Table" bundle:nil]; 

    [windows.tableView reloadData]; 
    [self.view addSubview:windows.tableView]; 
    windows.tableView.transform = CGAffineTransformMakeTranslation(0, 44); 

    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

}

+1

請顯示一些代碼。 –

+1

請顯示更多代碼@ yeker3 –

+0

告訴我你想要什麼代碼,因爲我不能上傳洞代碼,因爲這個項目不公開,抱歉給您帶來不便! @Pétur – yeker3

回答

0

的問題是,tableViewController和ViewController是兩個視圖控制器,所以我將它們結合在一起,現在一切工作正常。

1

沒有看到你使用的代碼我無法完全回答,但我的猜測是,你需要在viewWillAppear中的一些東西來重新加載你的表或表xib。 viewWillAppear將在每次你的模態被解除時被調用。

另一種選擇是創建委託協議,以允許模態控制器調用初始視圖控制器上的方法。

這是一個很好的文章開始:https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

+0

添加了代碼 – yeker3

0

首先,我必須聲明,您的問題已獲得downvotes,很可能是因爲它寫的英語不好,最初它缺乏缺少所需的必要信息解。

接下來,我想強調一下,諸如[super viewDidLoad]之類的超級調用應該總是出現在任何代碼邏輯之前。將它們移動到每個方法的頂部。

現在至於爲什麼你有問題。

無論何時在內存中創建視圖控制器,它都將執行其viewDidLoad方法,然後在它出現之前執行viewWillAppear方法(在它的父級上,除非您的過載),該執行僅在視圖生存期中出現一次。任何未來嘗試顯示視圖都會導致調用viewWillAppear。

解決方案 將下面的代碼

[windows.tableView reloadData]; 
[self.view addSubview:windows.tableView]; 
windows.tableView.transform = CGAffineTransformMakeTranslation(0, 44); 

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [windows.tableView reloadData]; 
    [self.view addSubview:windows.tableView]; 
    windows.tableView.transform = CGAffineTransformMakeTranslation(0, 44); 
} 
+0

首先,我不知道這是劍橋英語考試(對不起,先生試圖說一些不是我的第一語言的東西......)。感謝您的回答,但沒有爲我工作我仍然有同樣的問題@Pétur – yeker3