Order UITableViewCell Tutorial

ကျွန်တော်တို့တွေ ပြီးခဲ့တဲ့ tutorial တုန်းကတော့ delete လုပ်ပြီးပါပြီ။ Edit လုပ်လိုက်တဲ့အခါမှာ delete လုပ်ဖို့အတွက် အနှုတ် button လေးပြသလိုပဲ cell ကို drag & drop ရွှေ့လို့ရအောင်လည်း ဖန်တီးလို့ရပါတယ်။ ပြီးခဲ့ tutorial က file ကိုပဲ ပြင်ရအောင်။

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {

}

အဲဒီ function လေး ထပ်ဖြည့်ပြီး run ကြည့်လိုက်ပါ။

Order ရွှေ့ဖို့အတွက် ညာဘက်မှာ icon လေးပါလာတာ တွေ့မှာပါ။

Order ရွှေ့ပြီး Done လုပ်လိုက်ပါ။ ဒါဆို ရင် order စီထားတဲ့ အတိုင်း တွေ့ရမှာပါ။ သို့ပေမယ့် TableView ကို scroll လုပ်လိုက်ရင် နဂိုအတိုင်း ပြန်ဖြစ်သွားပါတယ်။

ဘာလို့လဲ။ ဘာလို့လဲဆိုတော့ cell text ကို ကျွန်တော်တို့တွေ listitem array နဲ့ ပြထားလို့ပါ။ order လုပ်လိုက်ပေမယ့် list item array က မပြောင်းသွားဘူးလေ။ ဒါကြောင့် listitem array အတွက် array အခန်း ရွှေ့ဖို့ function ရေးရပါမယ်။

အရင်ဆုံး RootViewController.h မှာ function ကို ကြေငြာပါမယ်။

- (void)moveObjectFromIndex:(NSUInteger)from toIndex:(NSUInteger)to;

အဲဒါကို ကြေငြာပြီးရင် RootViewController.m မှာ function ကို ဒီလိုရေးပါတယ်။

- (void)moveObjectFromIndex:(NSUInteger)from toIndex:(NSUInteger)to
{
    if (to != from) {
        id obj = [listItem objectAtIndex:from];
        [obj retain];
        [listItem removeObjectAtIndex:from];
        if (to >= [listItem count]) {
            [listItem addObject:obj];
        } else {
            [listItem insertObject:obj atIndex:to];
        }
        [obj release];
    }
}

code ကတော့ ရှင်းပြစရာမလိုတော့ပါဘူး။ programming စတင်ကာစတုန်းက array အခန်း ရွှေ့သလိုပဲ ရွှေ့ထားတာပါ။

ပြီးတော့ tableviewcell ကို ရွှေ့လိုက်တဲ့အခါမှာ အဲဒီ function ခေါ်ပါမယ်။

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
	[self moveObjectFromIndex:fromIndexPath.row toIndex:toIndexPath.row];
}

ကဲ… ဒါဆိုရင် scroll ရွှေ့လိုက်လည်း ရပါပြီ။ ဘာဖြစ်လို့လည်းဆိုတော့ moveindex လုပ်လိုက်တိုင်း ဒီဘက်က listitem array ကပါ move index လုပ်သွားလို့ပါ။

Leave a Reply

Your email address will not be published. Required fields are marked *