2014-03-02 29 views
0

我想知道,在ios7中,它是使用prepareForSegue方法,而不是didSelectAtIndexPath方法?在iOS7 tableview

如果是,我該如何更改可以在ios7中運行的後續代碼?

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
NSString *tempSqlStatement = @""; 
NSString *tempString = @"%"; 
databaseName = @"TCMdb8.sql"; 
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains 
(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDir = [documentPaths objectAtIndex:0]; 
databasePath = [documentsDir stringByAppendingPathComponent: 
       databaseName]; 
if (buttonNum == 0) { 

    Function1DetailViewController *function1DetailViewController = 
    [[Function1DetailViewController alloc] initWithKey:[listOfItems objectAtIndex:indexPath.row] type:@"1"]; 

[self.navigationController pushViewController:function1DetailViewController animated:YES]; 
}else if (buttonNum != 0){ 
    if (buttonNum == 1) { 
     tableTitle = @"xxxx"; 
     tempSqlStatement = [NSString stringWithFormat:@"select name from Medicine where stroke ='%@' ORDER BY length(name) ASC", [listOfItems objectAtIndex:indexPath.row]]; 
     function1SQLStatement = [tempSqlStatement UTF8String]; 
    } 
    [self checkAndCreateDatabase]; 
    [self readFromDatabase]; 
    [tableList reloadData]; 
    buttonNum = 0; 

} 
+2

'didSelectRowAtIndexPath'和'prepareForSegue'都在iOS7使用。他們做不同的事情。此外,它們都是在iOS7之前使用過的,並且它們的使用從iOS6到iOS7沒有改變。 鑑於您使用'pushViewController:'方法推送視圖控制器並且實際上並未使用segues,因此您將永遠無法看到調用的'prepareForSegue'方法,並且就我所知,您的代碼仍然可以在iOS7中工作。 如果它不起作用,你應該解釋什麼不是更詳細的工作。 – nhgrif

+0

除非您使用故事板,否則您不需要執行任何操作prepareForSegue爲您提供了將值傳遞給要轉換到的視圖控制器的機會。基於你的上面的實現,我可以看到你的Function1DetailViewController有自定義的初始化程序,在這種情況下你可能沒有使用storyboard,如果是這樣的話,你的上面的實現應該沒有任何修改就可以在iOS 7.0下運行,就像SelectSelectRowAtIndexPath仍然行爲一樣正如它的意思。 – ldindu

+0

我正在使用故事板。問題是它不能推到Function1DetailViewController.Moreover,因爲tableview沒有裏面的單元格,我不知道如何畫兩個viewcontrollers之間的鏈接 – user2914810

回答

0

從iOS2開始可用。您將需要一些變化:

if (buttonNum == 0) { 
    [self performSegueWithIdentifier:@"Function1Segue" sender:sender]; 
} 

然後實現deleguate方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Make sure your segue name in storyboard is the same as this line 
    if ([[segue identifier] isEqualToString:@"Function1Segue"]) 
    { 
     // Get reference to Function1DetailViewController 
     //Create new Instance here, and set its properties values 
    } 
} 
+0

其實,我試過這個方法。但是當我運行這些應用程序時,在我從表格中選擇之後,應用程序關閉。並告訴我的問題:線程1:信號SIGART – user2914810

+0

用該代碼更新您的文章,也許我可以幫助您找到問題 – meda

+0

我更新了代碼,請幫助我 – user2914810