Ke mana harus menelepon bersiap untuk segue dalam Tampilan tabel

Hai, saya sedang mengerjakan aplikasi yang memposting 50 lokasi dalam tableView dinamis dan ketika Anda mengklik suatu lokasi, aplikasi itu akan berpindah ke pengontrol tableView baru dan memposting 50 foto dari lokasi itu. Saya membuat tableViewController dan kemudian membuat file baru yang berisi semua file yang diperlukan tableView IE Cellforrowatindexpath. Saya memiliki koneksi segue dari tableViewcontroller utama tetapi semua informasi disimpan di file baru yang berisi metode yang digunakan tableViewController. Apakah saya menulis PrepareForSegue di tableViewController atau menulisnya di file yang memiliki metode untuk membuat tabel? juga jika saya menulisnya di tableViewCONtroller bagaimana cara mengakses nama sel untuk salah satu sel yang dibuat secara dinamis? terima kasih.

 -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"Photos for location"]){
//I dont know what to use for the name
        [segue.destinationViewController setPhotoInPlace: WHAT DO I CALL THIS!?
    }
}

Nama panggilan berasal dari file lain yang menggunakan API publik untuk membuat serangkaian kamus yang memiliki informasi seperti nama dan lokasi. File tersebut bernama flickrFetcher. Berikut adalah kode yang membuat sel secara dinamis. self.brain adalah turunan dari flickFetcher dan topPlaces adalah metode yang dipanggil dari flickrFetcher untuk mendapatkan NSArray dari NSdictionaries.

      - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    (NSIndexPath *)indexPath
{
// Create an instance of the cell
UITableViewCell *cell;
cell = [self.tableView dequeueReusableCellWithIdentifier:@"Photo Description"];

if(!cell)
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Photo Description"];
// set properties on the cell to prepare if for displaying   
//top places returns an array of NSDictionairy objects, must get object at index and then object for key

// the cellTitle has country then province, country goes in main title and province will go as subtitle.
NSString * cellTitle = [[[[self.brain class] topPlaces] objectAtIndex:self.location] objectForKey:@"_content"]; 

NSRange cellRange = [cellTitle rangeOfString:@","];

NSString * cellMainTitle = [cellTitle substringToIndex:cellRange.location];

cell.textLabel.text = cellMainTitle;

NSString* cellSubtitle = [cellTitle substringFromIndex:cellRange.location +2];

cell.detailTextLabel.text =  cellSubtitle;
//location is an int property that allows a new selection when using objectAtIndex
self.location++;
return cell;
}

person Terrel Gibson    schedule 02.08.2012    source sumber


Jawaban (1)


prepareForSegue: adalah metode UIViewController, jadi metode ini harus ada di pengontrol tampilan Anda. Parameter sender seharusnya adalah sel Anda yang menyebabkan segue. Anda dapat menggunakan metode tampilan tabel indexPathForCell: untuk mendapatkan jalur indeks terkait dan itu seharusnya cukup untuk menemukan data yang sama dengan yang Anda masukkan ke dalam sel saat Anda menerapkan cellForRowAtIndexPath:.

(Saya tidak yakin apa yang Anda maksud dengan "file baru" atau kelas apa yang diimplementasikannya, jadi saya tidak bisa mengatakan apakah itu memengaruhi apa pun.)

person Phillip Mills    schedule 02.08.2012
comment
dengan file baru maksud saya, saya membuat subkelasnya - person Terrel Gibson; 03.08.2012
comment
Oke, jika itu adalah subkelas, itu berarti itu juga adalah UIViewController jadi apakah Anda meletakkan metode ini di induk atau anak tidak akan membuat perbedaan fungsional. Anak tersebut mungkin memberikan akses yang lebih baik ke informasi yang ingin Anda sampaikan ke pengontrol baru...Saya kira. - person Phillip Mills; 03.08.2012
comment
ketika saya meletakkan prepforsegue di induk dan kemudian menulis NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; Saya mendapatkan pesan kesalahan yang menyatakan bahwa tampilan tabel tidak dideklarasikan. Tetapi jika terjadi pada anak-anak, kesalahan ini teratasi. Juga bagaimana cara mendapatkan nama panggilan jika jalur indeks hanya mengembalikan baris dan bagian? - person Terrel Gibson; 03.08.2012
comment
dan menurut saya itu UITableViewController bukan UIViewController - person Terrel Gibson; 03.08.2012
comment
(A UITableViewController juga merupakan UIViewController.) Mungkin Anda menggunakan baris dan bagian untuk memasukkan informasi ke dalam sel; Saya berasumsi itulah yang perlu Anda sampaikan ke pengontrol baru. Jika belum, mungkin Anda bisa menjelaskan darimana nama ponsel tersebut berasal. - person Phillip Mills; 03.08.2012
comment
tidak mengetahui hal itu. Saya menambahkan kode cara pembuatan sel, semoga membantu - person Terrel Gibson; 03.08.2012
comment
dan kenapa self.tableView hanya dideklarasikan di file subkelas? - person Terrel Gibson; 03.08.2012
comment
Saya kira Anda akan lebih baik jika mengatur topPlaces sehingga Anda dapat mengindeksnya menggunakan baris jalur indeks. Saya khawatir apa yang Anda miliki akan mogok dan/atau memberikan hasil buruk jika Anda sering menggulir. (Sedangkan untuk self.tableView, harus tersedia dalam UITableViewController atau salah satu subkelasnya.) - person Phillip Mills; 03.08.2012