2015-03-09 3 views
0

Я создаю приложение, в котором перечислены станции поездов вокруг текущего местоположения пользователя. При выборе станции приложение должно указывать детали поездов, работающих там. Но вместо перехода к новому контроллеру View я хотел бы анимировать в представлении, имеющем другой UITableView, в том же исходном контроллере представления. Но когда я пытаюсь это сделать, на втором представлении отображается первый UITableView (тот, который перечисляет станции). Могу ли я загрузить два разных UITableViews в одном UIViewController? Примечание: - НЕ используя быстроеДобавить UITableView в UIViewController, который уже отображает другой UITableView

+1

Вы можете отличить оба вида таблиц на th имена eir. –

+1

Лучший способ создать отдельный UIViewController с UITableView, а затем '[self.view addSubview: viewcontroller.view];' – iphonic

+0

Можете ли вы добавить код из 'cellForRowAtIndexPath'? Как уже упоминалось, вы можете отличить их, используя точки или метки. – GoodSp33d

ответ

0

Прежде всего

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

Затем вы должны установить свои строки в соответствии с вашего Tableview

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 


    if (tableView == self.tableView1){ 
     //Return the count you want inside self.tableView1 
    } 

    else if (tableView == self.tableView2){ 
     //Return the count you want inside self.tableView2 
    } 
    else{ 
     return 0; 
    } 
} 

Наконец внутри ваша cellForRowAtIndexPath установить табличное значение в соответствии с вашим TableView.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
      if (tableView == self.tableView1){ 
       static NSString *CellIdentifier = @"Cell"; 
       //reference the cells to the right tables 
UITableViewCell *cell = [self.tableView1 dequeueReusableCellWithIdentifier: CellIdentifier forIndexPath:indexPath]; 
     } 

    else if (tableView == self.tableView2){ 
       static NSString *CellIdentifier2 = @"Cell2"; 
       UITableViewCell *cell2 = [self.tableView2 dequeueReusableCellWithIdentifier: CellIdentifier2 forIndexPath:indexPath]; 
     } 
    else{ 
     return 0; 
     } 
    } 

Добавьте свой 2-й tableView как подвид своим self.view

+0

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

0

вы должны задать теги для обоих tableviews и использовать эти теги в tableviewdelegate и datasource метод для заполнения данных

0

У меня была такая же проблема. Создайте один TableView и создайте два разных источника данных (это хорошая практика, чтобы поместить его в отдельный файл). Поэтому, когда вам нужно изменить данные, просто установите другой источник данных и перезагрузите данные.

0

создать два tableViews точек

@IBOutlet weak var imgTableView: UITableView! 
    @IBOutlet weak var commentTableView: UITableView! 

Теперь здесь использовать два различных tableviews с IF-условием для назначения различных данных в их,

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     if tableView == imgTableView { 
      return Array1.count 
     } 
     else if tableView == commentTableView { 
      return Array2.count 
     } 
     return 1 
    } 
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     if tableView == imgTableView { 
      var cell : ProductTableViewCell? = tableView.dequeueReusableCellWithIdentifier("cell") as? ProductTableViewCell; 
      var data : NSString = Array1.objectAtIndex(indexPath.row) as NSString; 
      cell?.configureCell(data) 
      return cell! 
     } 
     else if tableView == commentTableView { 
      var cell : CommentTableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as CommentTableViewCell 
      var data : NSDictionary = Array2.objectAtIndex(indexPath.row) as NSDictionary; 
      cell.configureCell(data, cellType: CommonCellType.Products) 
      return cell 
     } 
     return tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell 
    } 
Смежные вопросы