6 din 13
6
intrebari programare iPhone
  [ Ignoră ]   [ # 76 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

Am si eu o intrebare,am un tableView cu 5 cells.
Daca folosesc metods (UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier pentru a refolosi celulele ce ies din cadrul ecranului rezultatul este cel din imagini.
Cum pot rezolva asta?

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 77 ]
RankRank
Jr. Member
Din: a fost Iasi
Macuser din: 31.05.08
boboc - 20 Iulie 2010 10:43 AM

Am si eu o intrebare,am un tableView cu 5 cells.
Daca folosesc metods (UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier pentru a refolosi celulele ce ies din cadrul ecranului rezultatul este cel din imagini.
Cum pot rezolva asta?

Salut,

Cell-urile tale sunt custom sau vreuna din system?
Ai vreo imagine in Cell?
incearca sa pui string’ul de identifier ca static.

daca vrei mai multe informatii , pune codul aici.


Salutari,
StaS

Profil
 
  [ Ignoră ]   [ # 78 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

Da este un custom cell creat in interface builder:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
static NSString *customCellIdentifier = @"customCellIdentifier";
    
    
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifiercustomCellIdentifier];
    if(
cell == nil)
    
{
        NSArray 
*array = [[NSBundle mainBundle] loadNibNamed: @"CustomCell" ownerself optionsnil];
        
        for(
id object in array)
        
{
            
if([object isKindOfClass[CustomCell class]])
               
cell object;
        
}
    }
    
    cell
.name.text [[computers objectAtIndex:[indexPath row]] objectForKey: @"Name"];
    
cell.color.text [[computers objectAtIndex:[indexPath row]] objectForKey: @"Color"];
    
    return 
cell;
 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 79 ]
RankRank
Jr. Member
Din: a fost Iasi
Macuser din: 31.05.08

ai setat inaltimea celulei ca sa fie de aceashi marime ca in Interface Buileder?

tableView:heightForRowAtIndexPath:

Ai vre’o imagine in IB?

Profil
 
  [ Ignoră ]   [ # 80 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

da am setat si inaltimea:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
return 66;
 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 81 ]
RankRank
Jr. Member
Din: a fost Iasi
Macuser din: 31.05.08

Ma refeream daca ai o imagine in interiorul celulei , ca eu am patzit asta cand imaginea era mai mare decat celula
Nu’mi vine altceva in minte .

Profil
 
  [ Ignoră ]   [ # 82 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

Nu,in celula sunt doar 4 label-uri.

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 83 ]
RankRank
Jr. Member
Din: a fost Iasi
Macuser din: 31.05.08

pai incearca sa le scoti opacitatea la labeluri , sau sa le shtergi temporar… prin omisie…

Profil
 
  [ Ignoră ]   [ # 84 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

Mai am si eu o intrebare despre deep copy,am urmatoarea categorie ce adauga o metoda clasei NSDictionary,este un exemplu dintr-o carte.
Este un dictionar ce contine mai multe array-uri care contin la randul lor NSString-uri.
Din cate stiu eu copiile NSDictionary NSArray si NSSet sunt shallow by default.

@implementation NSDictionary (MutableDeepCopy)

- (
NSMutableDictionary *) mutableDeepCopy
{
    NSMutableDictionary 
*ret [[NSMutableDictionary alloc] initWithCapacity:[self count]];
    
    
NSArray *keys [self allKeys]
    
    for (
id key in keys)
    
{
        id oneValue 
[self valueForKey:key];
        
id oneCopy nil;

        if (
[oneValue respondsToSelector:@selector(mutableDeepCopy)]
            
oneCopy [oneValue mutableDeepCopy];
        else if (
[oneValue respondsToSelector:@selector(mutableCopy)]
            
oneCopy [oneValue mutableCopy];
        if (
oneCopy == nil
            
oneCopy [oneValue copy];

        
[ret setValue:oneCopy forKey:key]; return ret;
    
}
    
return ret;
}
@end 

Nu inteleg cum se realizeaza deep copy in codul de mai sus.
O metoda pentru deep copy care o stiu ar fi prin NSKeyedArchiver/NSKeyedUnarchiver:

array2 [NSKeyedUnarchiver unarchiveObjectWithData[NSKeyedArchiver archiveDataWithRootObjectarray1]
 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 85 ]
RankRank
Jr. Member
Din: a fost Iasi
Macuser din: 31.05.08

Cu cell’urile ai rezolvat? Posteaza aici ca sa shtie shi altii care se confrunta cu aceeasi problema..

Profil
 
  [ Ignoră ]   [ # 86 ]
RankRank
Jr. Member
Din: a fost Iasi
Macuser din: 31.05.08
boboc - 20 Iulie 2010 08:29 PM

Mai am si eu o intrebare despre deep copy,am urmatoarea categorie ce adauga o metoda clasei NSDictionary,este un exemplu dintr-o carte.
Este un dictionar ce contine mai multe array-uri care contin la randul lor NSString-uri.
Din cate stiu eu copiile NSDictionary NSArray si NSSet sunt shallow by default.

@implementation NSDictionary (MutableDeepCopy)

- (
NSMutableDictionary *) mutableDeepCopy
{
    NSMutableDictionary 
*ret [[NSMutableDictionary alloc] initWithCapacity:[self count]];
    
    
NSArray *keys [self allKeys]
    
    for (
id key in keys)
    
{
        id oneValue 
[self valueForKey:key];
        
id oneCopy nil;

        if (
[oneValue respondsToSelector:@selector(mutableDeepCopy)]
            
oneCopy [oneValue mutableDeepCopy];
        else if (
[oneValue respondsToSelector:@selector(mutableCopy)]
            
oneCopy [oneValue mutableCopy];
        if (
oneCopy == nil
            
oneCopy [oneValue copy];

        
[ret setValue:oneCopy forKey:key]; return ret;
    
}
    
return ret;
}
@end 

Nu inteleg cum se realizeaza deep copy in codul de mai sus.
O metoda pentru deep copy care o stiu ar fi prin NSKeyedArchiver/NSKeyedUnarchiver:

array2 [NSKeyedUnarchiver unarchiveObjectWithData[NSKeyedArchiver archiveDataWithRootObjectarray1]

 

Nu ineteleg care e intrebarea ta de fapt, dar daca intrebi cum se foloseshte mutableDeepCopy aici ai un exemplu:

NSMutableDictionary *dict [dictToCopy mutableDeepCopy] 
Profil
 
  [ Ignoră ]   [ # 87 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

Nu intreb cum se foloseste,asta stiu smile
Nu inteleg cum se realizeaza deep copy,adica unde se creaza noile obiecte.
De exemplu atribuirea asta intre 2 array-uri stiu ca e un shallow copy,creaza doar un nou pointer si nu obiectele in sine:
oneCopy = [oneValue mutableCopy];

Cu cell-urile nu am rezolvat inca.

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 88 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

ah,nu pot edita.
Deci cum spuneam acea atribuire intre 2 array-uri eu stiu ca va crea un nou pointer si va creste retain count-ul la toate obiectele.

oneCopy = [oneValue mutableCopy];

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 89 ]
RankRank
Jr. Member
Din: a fost Iasi
Macuser din: 31.05.08
boboc - 20 Iulie 2010 08:48 PM

ah,nu pot edita.
Deci cum spuneam acea atribuire intre 2 array-uri eu stiu ca va crea un nou pointer si va creste retain count-ul la toate obiectele.

oneCopy = [oneValue mutableCopy];

mutableCopy face acelasi lucru ca si mutableCopyWithZone: doar ca zone ia parametru nil , adika nu te intereseaza unde se va aloca memorie pentru noua instanta

Profil
 
  [ Ignoră ]   [ # 90 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Pt deep copy am inteles ca nu se poate decat manual, va trebui sa iterezi asupra obiectelor si sa creezi o copie a lor, tu iterezi asupra dictionarului nu si a arrayurilor din dictionar: http://www.cocoadev.com/index.pl?MutableCopy

Cu cellurile cred ca am patit si eu ciudatenii dar nu-mi mai amintesc nimic, incearca de la 0 cu un singur camp si schimba-i culoarea fundalului.

 Semnătură 

Mcintoshing…

Profil
 
   
6 din 13
6
 
‹‹ Grand Central e acum Open Source      Fink ››