2016-07-11 4 views
1

Я столкнулся с какой-то проблемой при выборе строки.Xcode - UITableView Issue

В принципе, всякий раз, когда пользователь выбирает строку в UITableViewController, я хочу, чтобы определенный контент отображался, преимущественно текст. У меня есть эта работа, в какой-то степени. Используя следующий код:

var varView = Int() 
if (varView == 0){ 

    Label.text = "E110" 

} 

else { 
    if (varView == 1){ 
    Label.text = "Veyron" 

    } 

    else { 
     Label.text = "Error" 
    } 

} 

Это работает, как указано. Однако из-за того, что у меня есть заголовки для категоризации продуктов в моем UITableViewController, он, кажется, «обновляется» после каждого заголовка раздела.

Я использовал массивы, чтобы заполнить мою UITableViewController с обеих секций заголовков и текста для заполнения UITableVC как так

struct Brands { 
    var sectionName : String! 
    var sectionBrands : [String]! 
} 

var brandArray = [Brands]() 


override func viewDidLoad() { 


    brandArray = [ 


    Brands(sectionName: "Bugatti", sectionBrands: ["EB 110","Veyron"]), 

    Brands(sectionName: "Cadillac", sectionBrands: ["Biarritz","BLS", "CTS", "Escalade", "SRX", "STS"]), 

У меня есть намного больше, чем это! Ха-ха.

Однако, из-за того, что у меня есть две строки под Buggati, код изменения содержимого работает, но при выборе первой строки под Cadillac я получаю возвращаемый тип «E110» при выборе «BLS», я получаю возврат «Veyron», и каждая другая строка возвращает значение «Ошибка». Я ожидал чего-то, после того, как первый в строки вернется с «Ошибка», но, похоже, «обновляет» количество int, как упоминалось.

Это код, я использую, чтобы вернуть значение (ы), которые я желал в зависимости от того, какой строки выбран:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    var DestVC = segue.destinationViewController as! ViewController 

    var indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow! 


    DestVC.varView = indexPath.row 
} 

Может кто-нибудь пролить некоторый свет на то, как решить этот вопрос? Или даже используйте имя поля, чтобы определить, что отображается, а не использовать Integer?

спасибо.

P.S- Я использую SWRevealViewController, что, я думаю, не имеет значения, но я считаю, что стоит упомянуть.

+0

вы хотите, чтобы выбранный ряд, чтобы открыть в новом представлении? – dreamBegin

+0

При выборе строки другой контроллер просмотра используется как сегмент. Но, как уже упоминалось, ошибка лежит в коде, который я считаю. Я повторно использовал идентификатор ячейки, возможно, это может быть проблемой? – TheNoviceProgrammer

+0

не может помочь. Я тоже начинаю, как и вы, но я могу предложить вам, как открыть выбранный элемент формы tableViewController в новый viewController, используя навигацию или без NavagationViewContoller. – dreamBegin

ответ

0

Для TableViewController Добавьте эту функцию в свой ViewController.m Убедитесь, что оба метода правильно определены в вашем контроллере просмотра.

  1. Tableview: cellForRowAtIndexPath:
  2. Tableview: numberOfRowsInSection:

    чем: -

    (void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    
    
    NSArray *keys=[[NSArray alloc]initWithObjects:@"CellNumberOne",@"CellNumbertwo",@"CellNumberThree",@"CellNumberFour", nil]; 
    NSArray *objects=[[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"4", nil]; 
    
    
    self.myData=[[NSDictionary alloc]initWithObjects:objects forKeys:keys]; 
    
    NSArray *keys=[self.myData allKeys]; 
    
    NSString *cellName=[keys objectAtIndex:indexPath.row]; 
    NSString *detail=[self.myData valueForKey:[keys objectAtIndex:indexPath.row]]; 
    
    if ([email protected]"CellNumberOne") { 
        UIStoryboard *sb=[UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
        UIViewController *view=[sb instantiateViewControllerWithIdentifier:@"CellNumberOne"]; //you have to set identifier for all the view controllers 
        [self.navigationController pushViewController:view animated:YES]; 
        } 
    if ([email protected]"CellNumbertwo") { 
        UIStoryboard *sb=[UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
        UIViewController *view=[sb instantiateViewControllerWithIdentifier:@"CellNumberTwo"]; //you have to set identifier for all the view controllers 
        [self.navigationController pushViewController:view animated:YES]; 
        } 
    
    
    if ([email protected]"CellNumberThree") { 
        UIStoryboard *sb=[UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
        UIViewController *view=[sb instantiateViewControllerWithIdentifier:@"CellNumberThree"]; //you have to set identifier for all the view controllers 
        [self.navigationController pushViewController:view animated:YES]; 
        } 
    
    
    if ([email protected]"CellNumberFour") { 
        UIStoryboard *sb=[UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
        UIViewController *view=[sb instantiateViewControllerWithIdentifier:@"CellNumberFour"]; //you have to set identifier for all the view controllers 
        [self.navigationController pushViewController:view animated:YES]; 
        } 
    
    
    
    }