0

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]; 

    } 

回答

0

它仍然不是很清楚你正在試圖做的。如果要根據單元格的內容來推送某個視圖控制器,但是沒有明確的行安排,我將使用行索引來訪問作爲數據源的數組。一些非常寬鬆代碼:

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

這裏是你如何能具有特定屬性的定義UIViewControllerMyViewController。在.h文件:

@interface MyViewController : UIViewController { 

    int anAttribute; 
} 

@property int anAttribute 

@end 

在.m文件:

@implementation MyViewController 

@synthesize anAttribute; 

@end 

您可以爲任何你想要的類型有許多屬性,然後你可以用aViewController.anAttribute如上設置。

+0

嗨盧克,我已經更新了上面的描述。所以當我選擇第一行時,我得到的日期信息的日期在下一頁。我使用select查詢來獲取列表的信息。現在,當我選擇第一個日期,它應該推動日期信息與其他信息拉起日期信息。要獲得會話列表,我創建另一個選擇查詢來使用所選日期提取信息。我主要關心的是如何傳遞信息到另一個視圖做日期變量選擇查詢。因爲我只能控制哪個視圖被傳遞而不是數據。 – lifemoveson 2011-06-07 17:57:42

+0

爲此,我將UIViewController的子類與要存儲的數據的成員變量進行比較。在上面的if語句中,可以在推視圖控制器之前將它們設置爲屬性。 – Luke 2011-06-09 13:03:08

+0

哦..謝謝,但我是這個領域的小新手。是否有可能爲我提供一個例子,如何創建一個帶有成員變量的子類UIViewController並將它們設置爲屬性? – lifemoveson 2011-06-09 14:19:18

0

我擔心這不是完全清楚你想,如果你需要根據推選定行,你可以簡單地做這樣的事情

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

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

} 

UPDATE上有不同的看法做...什麼:調用indexPath.row您將獲得所選行的索引。我想是由你決定做什麼取決於選擇哪一行。要將這些信息傳遞給下一個視圖,您可以簡單地考慮要設置的@property字段,要調用的視圖控制器的調用方法或自定義init方法。你發佈的代碼有什麼問題?

+0

我已更新我的問題。我知道我可以使用indexpath.row,但可以說它的動態如何將數據推送到下一個視圖? – lifemoveson 2011-06-06 23:43:38

+0

更新了答案。我擔心如果不知道你想要做什麼,我不能說更多... – Saphrosit 2011-06-07 12:02:18

0

創建對象 - 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

由於列表是動態的,它不會限制爲1或2或3.它取決於數據和數組的長度。所以在這種情況下,行的靜態定義將不起作用。我怎麼能想出一些動態的東西,並正確推送視圖控制器。 – lifemoveson 2011-06-06 23:51:23

+0

如果列表是Dynamic,那麼您無法動態地爲新行創建新視圖。我猜你會想要使用相同的行..這是邏輯。 – Legolas 2011-06-06 23:57:48

+0

其實,我有一個查詢,它從數據庫中提取數據並存儲在表中,然後我編寫一個查詢來提取信息的數據。我也有類似的查詢來根據日期提取下一個視圖的信息。但我需要知道用戶是否選擇了日期作爲調用正確查詢的行。我怎樣才能調用正確的查詢Wrt到選擇行呢? – lifemoveson 2011-06-07 00:04:21