Как подтолкнуть вид в зависимости от выбора строки? - PullRequest
0 голосов
/ 07 июня 2011

enter image description here / ***** ОБНОВЛЕНО ** *** / Second Imageenter image description here r.com / YH3cm.png

Я пытаюсь выяснить на изображении выше, какузнаем ли мы, что пользователь выбрал дату или трек./ ОБНОВЛЕНО / Данные, которые я получаю, находятся в запросе выбора, и я создаю массив для хранения списка.Он динамический и не обязательно ограничен двумя полями, также может иметь 10 полей.Как я узнаю, какая строка выбрана, и как я перенесу данные в следующее представление.

Как и в didSelectRowAtIndexPath, как я должен нажать поле даты или дорожки в следующем представлении?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

if (dvController == nil) 
  dvController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];

Teat *obj = [appDelegate.coffeeArray objectAtIndex:indexPath.row];

dvController.obj = obj;
 // Pass the selected object to the new view controller.
 [self.navigationController pushViewController:dvController animated:YES];

   }

Ответы [ 3 ]

0 голосов
/ 07 июня 2011

Создание объектов - dateInfoViewController и trackInfoViewController, а затем ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

NSInteger row = [indexPath row];
if (row==0)
{
if (self.dateInfoViewController == nil)
     {
    DateInfoViewController *temp = [[DateInfoViewController alloc] init];
    self.dateInfoViewController = temp;
    [temp release];
    }



else {
    dateInfoViewController.title= [ NSString stringWithFormat:@"%@", [sessionInfoDetailsArray objectAtIndex:row]];
    YourAppDelegate *delegate = [[UIApplication sharedApplication]delegate];

    [delegate.sessionNavigationController pushViewController:dateInfoViewController animated:YES]; 
    }
}

  if (row==1)
{
    if (self.vetInfoViewController == nil)
    {
       TrackInfoViewController *temp = [[TrackInfoViewController alloc] init];
        self.trackInfoViewController = temp;
        [temp release];
    }


    else {
        trackInfoViewController.title= [ NSString stringWithFormat:@"%@", [sessionInfoDetailsArray objectAtIndex:row]];
        YourAppDelegate *delegate = [[UIApplication sharedApplication]delegate];
        [delegate.sessionNavigationController pushViewController:trackInfoViewController animated:YES]; 
    }
}
0 голосов
/ 07 июня 2011

До сих пор не очень ясно, что вы пытаетесь сделать.Если вы хотите выдвинуть определенный контроллер представления в зависимости от содержимого ячейки, но нет определенного расположения строк, я бы использовал индекс строки для доступа к массиву, являющемуся источником ваших данных.Некоторый очень свободный код:

WhateverObject* selectedObject= (WhateverObject*)[tableDataSourceArray objectAtIndex:indexPath.row];
if( [selectedObject hasAnAttributeYouCareAbout] )
{
    MyViewController* theCorrectController= whicheverViewControllerYouWant;
    theCorrectController.anAttribute= aValue;
    [self.navigationController pushViewController:theCorrectController animated:YES];
}

И вот как вы можете определить свой UIViewController подкласс MyViewController с определенными атрибутами.В файле .h:

@interface MyViewController : UIViewController {

     int anAttribute;
}

@property int anAttribute

@end

В файле .m:

@implementation MyViewController

@synthesize anAttribute;

@end

Вы можете иметь столько атрибутов, сколько хотите, любого типа, а затем вы можете установить их с помощьюaViewController.anAttribute как указано выше.

0 голосов
/ 07 июня 2011

Боюсь, не совсем понятно, что вы хотите сделать ... если вам нужно выдвинуть другое представление в зависимости от выбранной строки, вы можете просто сделать что-то вроде

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

if (indexPath.row == 0) 
    //push view 1
else 
    //push view 2

}

ОБНОВЛЕНИЕ: вызывая indexPath.row, вы получите индекс выбранной строки. Я думаю, вам решать, что делать в зависимости от того, какая строка выбрана. Чтобы передать эту информацию следующему представлению, вы можете просто подумать о поле @property, которое нужно установить, о методе для вызова или о пользовательском методе init для контроллера представления, который вы отправляете. В чем проблема с кодом, который вы разместили?

...