2013-05-03 3 views
0

Я хочу разработать приложение для iPad. У меня есть UIViewController, которые содержат UITableView и UIView, а в моем файле .xib У меня есть эти два контроллера. В моем ViewController.h: У меня есть UITableView *table и UIView *viewContent.UITableView и UIView в одном UIViewController

В ViewController.m: Я разработал функции, которые мне нужно загрузить данные в виде таблицы. Теперь мне нужно передать данные от UITableView до моего UIView. Я использую didSelectRowAtIndexPath, но он не работает:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // I get the object activite : here no problem 
    IPADAG1Activity *activite = [[objects objectForKey:[objectsIndex objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row]; 
    UIView *contentView = [[UIView alloc]init ]; 
    //now I instanciate my UIViewController wich contain : uiview *contentview and uitableview 
    GSAActivityViewController *activity = [[GSAActivityViewController alloc]init]; 
    //in uiview I add label "desc" that I affect the value of activite.DESCRIPTION 
    activity.desc.text = activite.DESCRIPTION; 
} 
+0

Вы пытаетесь создать новый viewController и добавить его в строку tableView или пытаетесь получить доступ к viewController на другом представлении? –

+0

Кажется, вам нужно просто добавить новый вид viewController, а не создать новый viewController для хранения представления. –

+0

@MarkM: Я не понимаю, что вы подразумеваете под этим –

ответ

0

Я предполагаю, что этот код является частью из вас GSAActivityViewController класс. При этом вам не нужно создавать новый GSAActivityViewController и менять метку на этом контроллере, потому что у вас уже есть инициализированный контроллер.

Вот что делает ваш код:

//This line is getting your IPADAG1Activity correctly it looks like, this is fine 
IPADAG1Activity *activite = [[objects objectForKey:[objectsIndex objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row]; 


//This code is creating a brand new UIView called *contentView, but it never gets used. I am guessing that you are getting a warning about an unused variable here. ? This line does not need to be in the program as far as I can tell because you don't need to create a new contentView, you just need to use the on GSAActivityViewController 
UIView *contentView = [[UIView alloc]init ]; 


//The line below is creating a brand new instance of GSAActivityViewController, but you don't want a brand new isntance, you want to use this GSAActivityViewController that has already been initialized. This line does not need to be in the program as fas as I can tell. 
//now I instanciate my UIViewController wich contain : uiview *contentview and uitableview 
GSAActivityViewController *activity = [[GSAActivityViewController alloc]init]; 


//Lastly, you are changing the text of desc on the new GSAActivityViewController that you created. This controller did not need to be created and is not being used in any way other than this function block, so when you change the text on desc you are changing the text on something that has not been displayed and is just about to get tossed out when this function ends (Assuming ARC) 
//in uiview I add label "desc" that I affect the value of activite.DESCRIPTION 
activity.desc.text = activite.DESCRIPTION; 

Так, чтобы исправить вашу проблему, вы можете просто использовать self для получения текущего GSAActivityViewController. Вам не нужно инициализировать новый (или новый contentView).

Так вот как ваш код должен выглядеть:

IPADAG1Activity *activite = [[objects objectForKey:[objectsIndex objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row]; 

//in uiview I add label "desc" that I affect the value of activite.DESCRIPTION 
self.desc.text = activite.DESCRIPTION; 

Этот ответ основан на нескольких допущениях, в первую очередь, что desc является этикетка, которая является собственностью GSAActivityViewController и что этот код находится внутри GSAActivityViewController ,

0
IPADAG1Activity *activite = [[objects objectForKey:[objectsIndex objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row]; 

Вы получаете данные в active.DESCRIPTION

проблема здесь

GSAActivityViewController *activity = [[GSAActivityViewController alloc]init]; 
//in uiview I add label "desc" that I affect the value of activite.DESCRIPTION 
activity.desc.text = activite.DESCRIPTION; 

вы не добавили активности .view to self.view.

+0

, даже если я меняю его на строку: @ "value", метка dosen't принимает это значение –

+0

Активность представляет собой весь мой uiviewcontroller, который содержит: uiview и uitableview –

+0

, тогда нет необходимости создавать еще один объект того же класса –

0

Вам нужно установить tableView s delegate:

self.tableView.delegate = self; 

Или вы могли бы сделать это в IB:

enter image description here

+0

Да, я сделал это, моя проблема не в отображении данных в мою таблицу, это сделано. Теперь мне нужно передать эти данные на мой uiview –

+0

@MMerou Используете ли вы статические или прототипные таблицы? – Undo

+0

Прототип table .excuse me Данные plz показаны в таблице, поэтому я не думаю, что проблема заключается в том, как отображать данные, я думаю, что я пропустил что-то в методе didselectedrowatindex. –

Смежные вопросы